gpt4 book ai didi

ios - 撕裂 coredata 堆栈可以解决模型更新问题吗?

转载 作者:行者123 更新时间:2023-11-29 05:20:13 24 4
gpt4 key购买 nike

假设最新的应用程序发布版本是版本号 20。到目前为止,到版本号 20 为止已有 10 次核心数据迁移。例如:使用版本3的用户,直接自动更新到版本20。

我想删除 coredata 堆栈并重建它。但它能解决模型更新问题吗?表示版本 3 使用 v3 数据模型更新 (xcdatamodel),版本 20 使用 v20 数据模型更新 (xcdatamodel)。如果当用户自动更新应用程序从版本 3 到 20 时,我使用以下代码删除并重建 coredata。那么它也会指向新的 xcdatamodel 版本吗?

 var allstores : Array = self.storeContainer.persistentStoreCoordinator.persistentStores
for store in allstores{
// remove store file from coordinator

do {
try storeContainer.persistentStoreCoordinator.destroyPersistentStore(at: store.url!, ofType: NSSQLiteStoreType, options: nil)

} catch let error {
print("\(error.localizedDescription)")

}
}

然后重建..

self.storeContainer.loadPersistentStores(completionHandler: { (nsPersistentStoreDescription, error) in
guard let error = error else {
return
}
fatalError(error.localizedDescription)
})

最佳答案

是的。一旦我决定重建数据库,因为它与旧版本不兼容,我就实现了这个策略。侧节点:现在我只依靠CoreData来处理迁移。

要测试它是否有效,请创建一个具有非必填字段的实体,并为该实体插入一行,但不包含该字段的值。现在,在您的新数据模型中,将完全相同的字段设置为必填字段。现在,如果您不销毁持久存储并重建它,您将看到应用程序崩溃,如代码中所示。但是,如果您重建它,它就会起作用。

请注意,用户已丢失所有数据,但我想您已经知道这一点。我有一些代码查询数据库中的现有数据,并从服务器复制本地缓存。

关于ios - 撕裂 coredata 堆栈可以解决模型更新问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58737573/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com