ios - 在 coredata 加载时更新 Bool

标签 ios xcode core-data swift3

我正在尝试检查该应用程序是否已安装,如果已安装,请删除所有待处理的本地通知。我正在尝试使用此代码,但它似乎没有正确保存到我的核心数据中。

// 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。 我是否在此处运行了获取请求以使其正常工作?

最佳答案

每次您创建一个新的Global 托管对象时,它总是具有默认值。要实现您想要的效果,您必须获取已设置的 Global 托管对象并检查其属性。

Core Data 是这个问题的一个非常繁重的解决方案,更好的方法是像这样使用 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

关于ios - 在 coredata 加载时更新 Bool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42012430/

相关文章:

ios - 从 xcode 安装应用作为更新

xcode - 在 xcode 10.1 上添加可本地化的字符串

iphone - NSFetchedResultsController 的实例需要非零 fetchRequest 和 ManagedObjectContext?

ios - 我怎样才能使用 Core Data 和 Swift 获取非标准(可转换)属性来更新/保存和持久化?

带有 Interface Builder 的 iOS8 自调整静态 TableView 单元格

ios - 选中单元格时隐藏圆形uiview

ios - 我是否需要为不同类型的注释创建实现 MKAnnotation 协议(protocol)的类?

不包括设备位码上的 iOS 框架

ios - 在 loginView 中解析背景图像,不适合所有 iPhone 设备的屏幕尺寸

ios - RKObjectMapping 和 RKEntityMapping 的关系