iPhone - 将Core Data添加到现有项目中?

19

我正在尝试为现有项目添加核心数据功能。 我添加了一个名为“myProj.xcdatamodel”的数据模型文件。

当获取managedObjectModel时,我的代码在下面的位置崩溃了。 “momd”文件是什么?我该在哪里获取它或者如何创建它? 当我读取路径时,它返回null并使应用程序崩溃。

NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"myProj" ofType:@"momd"];
NSURL *modelURL = [NSURL fileURLWithPath:modelPath];
2个回答

29

momd 文件是 mom 文件的版本化等效文件。在这一点上,您有两个选择:

  1. 将版本添加到您现有的 myProj.xcdatamodel 模型中。在 Xcode 中选择 myProj.xcdatamodel 文件并选择 Design -> Data Model -> Add Model Version 菜单。
  2. 仅使用非版本化模型文件。更改你提供的代码为:

    NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"myProj" ofType:@"mom"]; NSURL *modelURL = [NSURL fileURLWithPath:modelPath];

如果您从 Xcode 的默认模板创建基于导航的应用程序(使用 Core Data 进行存储),您会注意到模型文件已经进行了版本控制。

更多信息请参见:Model Versions


谢谢,明天我有代码访问权限时会尝试这个。任何人怎么可能知道这个呢?:( 在文档中找不到这个。 - aryaxt
请查看Core Data版本控制和数据迁移编程指南 - http://developer.apple.com/library/ios/#documentation/cocoa/Conceptual/CoreDataVersioning/Articles/vmVersioning.html%23//apple_ref/doc/uid/TP40004714-SW1 - Chris Gummer

5

"mom"或"momd"文件是.xcdatamodel文件的编译版本。也许您没有将.xcdatamodel文件添加到目标中,因此它没有被编译?对其进行“获取信息”操作,并确保为您的目标构建。

另外,查看CoreDataBooks示例代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接