iCloud 核心数据版本迁移
Core Data Version Migration with iCloud
我在生产中有一个 Core Data 应用程序,想向现有实体添加属性。经过研究,我发现这是一个“轻量级迁移”,只需要在加载持久存储之前在我的 persistentStoreDescriptions
中添加 NSMigratePersistentStoresAutomaticallyOption
和 NSInferMappingModelAutomaticallyOption
选项:
let container = NSPersistentCloudKitContainer(name: "app")
guard let description = container.persistentStoreDescriptions.first else { fatalError("Container not available") }
//For migration VVV
description.setOption(true as NSNumber, forKey: NSMigratePersistentStoresAutomaticallyOption)
description.setOption(true as NSNumber, forKey: NSInferMappingModelAutomaticallyOption)
//End of migration additions ^^^
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Store loading failure")
}
}
虽然这看起来很容易解决,但我有两个问题无法在其他任何地方找到答案:
1.对于从现在开始更新其应用程序版本的任何人,我能否为应用程序的所有未来版本保留这两个新的迁移选项?
2。由于我使用 NSPersistentCloudKitContainer
,在将新数据模型发布到 CloudKit 仪表板时,用户当前版本的应用程序是否应该包括这两个迁移选项?恐怕如果 CloudKit 数据模型与他们的应用程序版本不同,它会在同步他们的项目时崩溃他们的应用程序
非常感谢对此的任何帮助!更改数据模型总是一种可怕的经历,而且我从来没有做对,而且总是导致人们的应用程序崩溃。非常感谢您提供的任何帮助。
我在生产中有一个 Core Data 应用程序,想向现有实体添加属性。经过研究,我发现这是一个“轻量级迁移”,只需要在加载持久存储之前在我的 persistentStoreDescriptions
中添加 NSMigratePersistentStoresAutomaticallyOption
和 NSInferMappingModelAutomaticallyOption
选项:
let container = NSPersistentCloudKitContainer(name: "app")
guard let description = container.persistentStoreDescriptions.first else { fatalError("Container not available") }
//For migration VVV
description.setOption(true as NSNumber, forKey: NSMigratePersistentStoresAutomaticallyOption)
description.setOption(true as NSNumber, forKey: NSInferMappingModelAutomaticallyOption)
//End of migration additions ^^^
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
fatalError("Store loading failure")
}
}
虽然这看起来很容易解决,但我有两个问题无法在其他任何地方找到答案:
1.对于从现在开始更新其应用程序版本的任何人,我能否为应用程序的所有未来版本保留这两个新的迁移选项?
2。由于我使用 NSPersistentCloudKitContainer
,在将新数据模型发布到 CloudKit 仪表板时,用户当前版本的应用程序是否应该包括这两个迁移选项?恐怕如果 CloudKit 数据模型与他们的应用程序版本不同,它会在同步他们的项目时崩溃他们的应用程序
非常感谢对此的任何帮助!更改数据模型总是一种可怕的经历,而且我从来没有做对,而且总是导致人们的应用程序崩溃。非常感谢您提供的任何帮助。