1.下面主要围绕这个图来写,如果返回true就代表有新的版本或者第一次启动app
// 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() { }