创建数据模型的更新版本并且仅向一个实体添加一些新属性后,我无法访问我的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模型中实体的原始属性那样显示自动完成选项。
答案 0 :(得分:0)
我发现了问题。将新属性添加到现有实体后,在Xcode中为每个实体创建的Swift文件没有更新。我手动编辑了文件并为新属性添加了声明,现在它可以按预期运行。希望这可以为处于相同情况下的其他人节省一些挫败感和时间。