gpt4 book ai didi

ios - 不兼容的 CoreData 存储是否总是会导致崩溃?

转载 作者:行者123 更新时间:2023-11-30 12:39:35 25 4
gpt4 key购买 nike

问题:

我们最近将 CoreData 引入了我们的应用程序,并且之前发布了一个具有不完整 CoreData 模型的版本。在那个发布的版本中,我们从未实现将数据写入 sqlite 数据库的代码,仅实现了模型。

在我们的内部测试中,我们会将设备恢复到之前发货的不完整型号,然后更新到较新的型号,并且从来不需要执行迁移,也没有遇到不兼容的商店异常。

但是,在我们的 Beta 测试中,我们发现现有用户由于商店不兼容而遇到崩溃,而一些现有用户则没有。

问题:

不兼容的存储是否总是会导致崩溃,如果是这样,为什么我们在从旧版本更新到不同的 CoreData 模型时不会遇到崩溃?

我应该提到,当我们对最新的 CoreData 模型进行更改时,我们确实会抛出不兼容的存储错误,但是当我们恢复到核心数据模型的非常原始版本时,我们不会看到抛出此异常。

最佳答案

回答您的问题,如果您的项目中调用了以下代码行

[__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeURL
options:nil
error:&error])

当您使用 CoreData 设置项目时 Xcode 自动添加的代码,那么是的,不兼容的存储总是会导致崩溃,除非您根据情况进行轻量迁移或重度迁移。

轻型迁移非常简单直接,但您必须遵守一些规则。对于轻型迁移,您将上面的代码行更改为:

 [__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeURL
options:@{NSMigratePersistentStoresAutomaticallyOption:@YES, NSInferMappingModelAutomaticallyOption:@YES}
error:&error])

更多轻量级迁移可以在 developer.apple 上查看

您还应该查看@raki 在评论中发布的链接。

关于ios - 不兼容的 CoreData 存储是否总是会导致崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42386475/

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