更新的核心数据模型属性不可访问?

时间:2019-06-26 01:00:39

标签: swift core-data core-data-migration

创建数据模型的更新版本并且仅向一个实体添加一些新属性后,我无法访问我的Swift View Controller文件中的新属性。

在针对iOS 12的Xcode 10中,我将所选的Core Data模型更改为更新的版本。据我了解,默认情况下已经启用了轻迁移。当我执行显示新属性的获取请求时,这似乎反映在控制台消息中。但是,我无法在视图控制器swift文件中的代码中访问新属性。我尝试在核心数据堆栈类NSPersistantStoreDescription中向MigrateStoreAutomatically和InferMappingModuleAutomatically添加“ true”标志,但仍然无法访问代码中的新属性。

// ATTEMPT @ ENABLING LIGHT MIGRATION IN CORE DATA
    lazy var storeDescription: NSPersistentStoreDescription = {
        let description = NSPersistentStoreDescription()
        description.shouldMigrateStoreAutomatically = true
        description.shouldInferMappingModelAutomatically = false
        return description
    }()

    lazy var persistentContainer: NSPersistentContainer = {

        let container = NSPersistentContainer(name: "123ABC")

        container.loadPersistentStores(completionHandler: { (storeDescription, error) in

            if let error = error as NSError? {
                fatalError("Unresolved error \(error), \(error.userInfo)")
        }
    })
        return container
}()



// CODE IN SWIFT VIEW CONTROLLER TRYING TO ACCESS NEW ATTRIBUTE
    var selectedTextPhrase: TextPhrase!

        self.selectedTextPhrase.imageURL = "WHAT HAPPENED TO MIGRATION?"
        self.selectedTextPhrase.favorite = true

“ TextPhrase”类型的值?没有成员“ imageURL”是我收到的消息。

“ imageURL”是我添加到实体的新的可选属性,它是一个字符串。 “收藏夹”属性是布尔值和先前Core Data模型版本中的预先存在的属性。我可以访问“收藏夹”属性,而不是“ imageURL”。键入代码“ imageURL”时,不会像原始Core Data模型中实体的原始属性那样显示自动完成选项。

1 个答案:

答案 0 :(得分:0)

我发现了问题。将新属性添加到现有实体后,在Xcode中为每个实体创建的Swift文件没有更新。我手动编辑了文件并为新属性添加了声明,现在它可以按预期运行。希望这可以为处于相同情况下的其他人节省一些挫败感和时间。