我正在使用由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。)"
我哪里错了?
答案 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
,或者您使用的任何商店类型使用