ios - 无法获取核心数据持久存储的元数据

标签 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 变量始终为零,我似乎无法弄清楚为什么。错误信息对我帮助不大:

Error Domain=NSCocoaErrorDomain Code=134000“操作无法完成。(Cocoa 错误 134000。)”

我哪里错了?

最佳答案

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

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

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

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

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

关于ios - 无法获取核心数据持久存储的元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28842820/

相关文章:

objective-c - Objective-C 或 C 语言中这段代码的规则语法是什么?

ios - 将关系插入核心数据的正确方法

objective-c - NSManagedObject 的唯一标识符

ios - 如果我在 iOS 项目中安装了一个 cocoapod 库但从未使用过它可以吗?

html - Bootstrap 列在 iPad 纵向模式下的高度不同

ios - 适用于 iOS 的 Google Places API 与 Google Places Web 服务

ios - 实现 textViewDidChange :

ios - 如何使用神奇的记录库 Swift 获取属性中的所有值

ios - swift 中的 UIView 初始方法总是显示错误

ios - 处理 Firebase childDeleted 和 childModified 观察者 Swift