swift - 更新后的核心数据模型属性无法访问?

标签 swift core-data core-data-migration

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

在面向 iOS 12 的 Xcode 10 中,我已将选定的核心数据模型更改为更新版本。据我了解,轻迁移已经默认启用。当我执行显示新属性的提取请求时,这似乎反射(reflect)在我的控制台消息中。但是,我无法访问 View Controller 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”是我添加到实体中的一个新的可选属性,它是一个字符串。 “最喜欢的”属性是一个 bool 值,是先前核心数据模型版本中预先存在的属性。我能够访问“favorite”属性,而不是“imageURL”。输入代码时,“imageURL”不会像原始核心数据模型中实体的原始属性那样出现自动完成选项。

最佳答案

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

关于swift - 更新后的核心数据模型属性无法访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56763814/

相关文章:

ios - iOS 应用程序中谷歌地图上的实时交通状况?

iphone - 如何从核心数据库获取数据

ios - CoreData关系困惑

ios - 轻量级迁移 swift2 xcode7

ios - 在核心数据中查找重复值

ios - Swift:TableView 滚动到位置

ios - UITextView() 不能定义为 nil?

ios - 使用 UIWebView 进行基本身份验证

ios - 使用 Core Data 保存图像

ios - 核心数据-轻量级迁移和多个核心数据模型