核心数据模型文件不在bundle中

时间:2012-11-15 18:00:19

标签: ios core-data nsbundle

我重新安排了程序文件夹中的文件,将它们分组到适当的子文件夹中。我确保它们都显示在已编译的源列表中,包括'xcdatamodeld'文件。

但是,创建托管对象模型不能使用以下代码:

if (mom_ != nil) {
    return mom_;
}

self.mom = [NSManagedObjectModel mergedModelFromBundles:nil];

return mom_;

我检查了[NSBundle mainBundle],特别是

[[NSBundle mainBundle] pathForResource:@"Words" ofType:@"xcdatamodeld"]

[[NSBundle mainBundle] pathForResource:nil ofType:@"xcdatamodeld"]

他们都返回零。当我通过名称和类型检查它们时,我可以看到其他资源存在。

应用程序包文件中有一个名为“Words.momd”的文件夹。

可能发生了什么以及如何解决?

2 个答案:

答案 0 :(得分:2)

尝试使用:

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Words" withExtension:@"momd"];

您想要加载已编译的数据模型,而不是xcdatamodeld文件:

  

数据模型是部署资源。除了模型中实体和属性的详细信息之外,您在Xcode中创建的模型还包含有关图表的信息 - 其布局,元素颜色等。在运行时不需要后一个信息。模型文件使用模型编译器momc进行编译,以删除无关的信息,并尽可能高效地运行资源的运行时加载。

source

答案 1 :(得分:0)

您可以使用MagicalRecords框架:

https://github.com/magicalpanda/MagicalRecord

并在一行代码中设置数据库:

[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:@"Words"];