swift微博第15天(新版的判断以及跟控制器的切换)

  • 1.下面主要围绕这个图来写,如果返回true就代表有新的版本或者第一次启动app
swift微博第15天(新版的判断以及跟控制器的切换)_第1张图片
新版的判断以及跟控制器的切换图
 // MARK: 新版的判断
    
    func isNewUpdateVersion() -> Bool {
    
    // 1.获取当前app的版本号,从info.plist里面拿到
    let currentVersion = Bundle.main.infoDictionary!["CFBundleShortVersionString"] as! String
    print("当前的版本号=\(currentVersion)")
    // 2.获取以前的版本号  ?? 代表的意思是: 前面的值如果为nil - 就取后面的值 这里再说明一下,nil 和 字符串空是完全不一样的概念
    let sandBoxVersion = UserDefaults.standard.object(forKey: "CFBundleShortVersionString") ?? ""
    print("之前的版本号=\(sandBoxVersion)")
    // 3.比较当前的版本号和以前的版本号
    // 3.1.如果当前的版本号大于以前的版本号 就代表有新的版本
    // 2.0  -  1.0
    /*
     *  orderedDescending 降序
     *  orderedAscending  升序
     *  orderedSame       相同
     */
    if currentVersion.compare(sandBoxVersion as! String) == ComparisonResult.orderedDescending{
        
        // 有新的版本就存下新的版本号作为下一次的对比
        // iOS7 之后就不用调用同步的方法了
        UserDefaults.standard.setValue(currentVersion, forKey: "CFBundleShortVersionString")
        // 降序
        print("有版本号更新")
        return true
    }
    
    // 没有版号更新
    return false   
 }
  • 注意 上面注释里面的 ?? 的意思 ,以及版本号都是字符串

  • 2 下面带大家重温一下通知

    • 2.1.定义常量保存通知的名称 <名字自己随便起>

      let JKPopoverAnimatorWillshow = "JKPopoverAnimatorWillshow"
      
    • 2.2.在使用的地方调用通知

       NotificationCenter.default.post(name: NSNotification.Name(rawValue: JKPopoverAnimatorWillshow), object: self)
      
    • 2.3.注册通知

       NotificationCenter.default.addObserver(self, selector: #selector(HomeViewController.change), name: NSNotification.Name(rawValue: JKPopoverAnimatorWillshow), object: nil)
      
    • 2.4.通知方法的实现

      func change() {
      
      }

你可能感兴趣的:(swift微博第15天(新版的判断以及跟控制器的切换))