我正在开发一个使用CoreData和版本化数据模型的pod。在我最近的更改中,我从我之前的版本(3)创建了一个新版本(4)。我做的唯一更改是添加一个新实体,并在现有实体中添加一个新添加的实体。根据Apple的文档(https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/vmLightweightMigration.html),这些是轻量级迁移支持的操作。
当我更新使用它并运行应用程序的项目中的pod时,即使我已将NSInferMappingModelAutomaticallyOption
和NSMigratePersistentStoresAutomaticallyOption
选项设置为YES
,我也会收到错误
"Can't find model for source store"
在错误日志中,它表示NSStoreModelVersionHashesVersion
是3.它应该是4吗?我无法告诉...... NSPersistentStoreCoordinator
当前的模型哈希似乎是正确的版本(4)。
在文档中,它说:
要执行自动轻量级迁移,Core Data需要能够在运行时自行查找源和目标托管对象模型。 Core Data在NSBundle的allBundles和allFrameworks方法返回的包中查找模型。如果将模型存储在其他位置,则必须按照使用迁移管理器中所述的步骤进行操作,如果无法自动找到模型。
我没有触及过捆绑(我甚至不知道它们代表什么),也没有改变我店铺的URL。我的商店网址是
[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
我最后添加@"mystore.sqlite"
。为什么我的迁移失败了?
注意:如果您想知道我是如何创建新的数据模型版本的,那么我完全按照此答案中的列出:https://stackoverflow.com/a/8363763/1084822