2

我重新排列了我的程序文件夹中的文件,将它们分组到适当的子文件夹中。我确保它们都显示在编译的源列表中,包括“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”的文件夹。

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

4

2 回答 2

2

尝试使用:

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

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

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

来源

于 2012-11-15T18:36:11.493 回答
0

您可以为此使用 MagicalRecords 框架:

https://github.com/magicalpanda/MagicalRecord

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

[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:@"Words"];
于 2012-11-15T18:07:45.857 回答