无法获取Core Data Persistent Store的元数据

时间:2015-03-03 22:03:30

标签: ios objective-c core-data restkit

我正在使用由Core Data支持的RESTKit。我试图检测我是否有新的核心数据模型版本。我将其设置为自动映射更改我只需要检测迁移以更新UI。我的代码是:

NSError *error;
NSURL *sourceURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Model" ofType:@"momd"]]
NSDictionary *sourceMetadata = [NSPersistentStoreCoordinator metadataForPersistentStoreOfType:nil URL:sourceURL error:&error];
BOOL needsMigration = ![[self managedObjectModel] isConfiguration:nil compatibleWithStoreMetadata:sourceMetadata];

sourceMetadata变量总是为零,我似乎无法找出原因。错误消息对我没有多大帮助:

错误域= NSCocoaErrorDomain代码= 134000"无法完成操作。 (可可错误134000。)"

我哪里错了?

1 个答案:

答案 0 :(得分:1)

您的错误是sourceURL是模型文件的路径:

NSURL *sourceURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Model" ofType:@"momd"]]

即应用程序包中的Model.momd。您需要使用持久性存储文件的路径,可能是$SOMETHING.sqlite,也可能在应用程序的文档目录中。

错误134000是NSPersistentStoreInvalidTypeError,Apple将其描述为“表示未知持久存储类型/格式/版本的错误代码”。这表明您的URL上的持久性存储文件存在问题,或者可能是它丢失了。首先要做的是查看error并查看NSPersistentStoreCoordinator试图告诉您的内容。它很有可能告诉你到底出了什么问题,但是你没有听。

如果该URL存在文件,则可能有助于将查询调用的第一个参数从nil更改为NSSQLiteStoreType,或者您使用的任何商店类型使用