我试图查看该应用是否已安装,如果已安装,请删除所有待处理的本地通知。我尝试使用此代码,但它似乎没有正确保存到我的核心数据中。
// check to see if the app has already been installed
let global = Global(context:coreDataStack.managedContext)
print("Has the app been installed before = \(global.wasLoaded)") // returns false
if(global.wasLoaded == false){
print("remove local notifications")
// remove all notifications
center.removeAllPendingNotificationRequests()
global.wasLoaded = true
coreDataStack.saveContext()
print("Has the app been installed before = \(global.wasLoaded)") // returns true
}
下次我运行应用程序时,wasLoad bool仍然会返回false。 我是否在此处运行了获取请求以使其正常工作?
答案 0 :(得分:3)
每次创建新的Global
托管对象时,它始终具有默认值。要实现您的目标,您必须获取已设置的Global
托管对象并检查其属性。
核心数据是解决此问题的一个非常重要的解决方案,更好的方法是使用UserDefualts
这样:
if UserDefaults.standard.bool(forKey: "isFirstLaunch") == false {
// Perform first launch actions
UserDefaults.standard.set(true, forKey: "isFirstLaunch")
}
// Continue with regular setup
您与false
进行比较,因为如果从未为给定密钥设置值,则bool(forKey:)
会返回false
。