- 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() { }
-