“找不到源存储的模型”核心数据错误
Posted
技术标签:
【中文标题】“找不到源存储的模型”核心数据错误【英文标题】:"Can't find model for source store" Core Data error 【发布时间】:2015-08-04 18:54:51 【问题描述】:我构建了一个全新的 xcode 项目,但没有选中“使用核心数据”。
我实现了自己的 coredata 帮助类来设置堆栈。
我创建了一个 xcdatamodel 文件,我在堆栈中引用它来设置核心数据。它有效。
每当我创建一个实体,然后创建它的 NSManagedObject 子类时,我都会收到这个巨大的错误。
2015-08-04 11:27:03.524 Himachal[3070:715719] CoreData: error: -addPersistentStoreWithType:SQLite configuration:(null) URL:file:///var/mobile/Containers/Data/Application/3261B814-C246-4937-92E6-6652F6E29AAB/Library/Application%20Support/DataModel.sqlite options:
NSInferMappingModelAutomaticallyOption = 1;
NSMigratePersistentStoresAutomaticallyOption = 1;
... returned error Error Domain=NSCocoaErrorDomain Code=134130 "The operation couldn’t be completed. (Cocoa error 134130.)" UserInfo=0x1710765c0 URL=file:///var/mobile/Containers/Data/Application/3261B814-C246-4937-92E6-6652F6E29AAB/Library/Application%20Support/DataModel.sqlite, metadata=
NSPersistenceFrameworkVersion = 519;
NSStoreModelVersionHashes =
;
NSStoreModelVersionHashesVersion = 3;
NSStoreModelVersionIdentifiers = (
""
);
NSStoreType = SQLite;
NSStoreUUID = "96440757-DC46-4B3D-BD88-88741E0B3337";
"_NSAutoVacuumLevel" = 2;
, reason=Can't find model for source store with userInfo dictionary
URL = "file:///var/mobile/Containers/Data/Application/3261B814-C246-4937-92E6-6652F6E29AAB/Library/Application%20Support/DataModel.sqlite";
metadata =
NSPersistenceFrameworkVersion = 519;
NSStoreModelVersionHashes =
;
NSStoreModelVersionHashesVersion = 3;
NSStoreModelVersionIdentifiers = (
""
);
NSStoreType = SQLite;
NSStoreUUID = "96440757-DC46-4B3D-BD88-88741E0B3337";
"_NSAutoVacuumLevel" = 2;
;
reason = "Can't find model for source store";
2015-08-04 11:27:03.526 Himachal[3070:715719] CoreData: annotation: NSPersistentStoreCoordinator's current model hashes are
Test = <1bf25eb0 2a3759be 4e86d088 de4f2a7e 350d3228 3cae66b5 1f628c4a 98f43e45>;
2015-08-04 11:27:03.526 Himachal[3070:715689] Core Data stack setup failed.
我尝试寻找有类似错误的人,但他们都与数据库迁移有关。一定有一件事情我做错了,也许我没有正确标记一些东西。有任何想法吗?
【问题讨论】:
试图理解——您是否使用一个核心数据模型运行应用程序,通过添加实体更改核心数据模型,然后再次运行应用程序?那是你收到错误的时候吗? 是的,就是这样 好的,那么这个错误是意料之中的......我会写一个答案。 【参考方案1】:根据docs,“您只能使用用于创建它的托管对象模型打开核心数据存储。因此,更改模型将使其与之前创建的存储不兼容(因此无法打开) 。”因此,如果您尝试使用一个核心数据模型运行应用程序,然后通过添加实体更改核心数据模型,然后再次运行应用程序,则会收到错误消息。
只要您的应用尚未部署到应用商店,就可以更轻松地从您的设备中删除该应用并使用全新的数据存储运行新版本以规避该问题。但是,如果您的应用程序已经发布,您显然不希望应用程序为您的用户崩溃,因此您必须通过执行称为“数据迁移”的操作以编程方式更改旧的核心数据模型以与新版本兼容。 "如果您当前的场景需要,这里有一个关于如何执行轻量级核心数据迁移的好教程:http://www.raywenderlich.com/27657/how-to-perform-a-lightweight-core-data-migration。
【讨论】:
修复了它。谢谢林赛!以上是关于“找不到源存储的模型”核心数据错误的主要内容,如果未能解决你的问题,请参考以下文章
在此模型中找不到名为“Book”的实体。 ios核心数据错误?