Ios 核心数据模型文件不在捆绑包中

Ios 核心数据模型文件不在捆绑包中,ios,core-data,nsbundle,Ios,Core Data,Nsbundle,我重新排列了程序文件夹中的文件,将它们分组到相应的子文件夹中。我确保它们都出现在编译源代码列表中,包括“xcdatamodeld”文件 但是,创建托管对象模型不能使用以下代码: if (mom_ != nil) { return mom_; } self.mom = [NSManagedObjectModel mergedModelFromBundles:nil]; return mom_; 我检查了[NSBundle mainBundle],特别是 [[NSBundle main

我重新排列了程序文件夹中的文件,将它们分组到相应的子文件夹中。我确保它们都出现在编译源代码列表中,包括“xcdatamodeld”文件

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

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

self.mom = [NSManagedObjectModel mergedModelFromBundles:nil];

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

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

他们都归零。当我按名称和类型检查其他资源时,我可以看到它们在那里

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


可能发生了什么以及如何修复?

您可以使用MagicalRecords框架:

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

[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:@"Words"];
尝试使用:

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Words" withExtension:@"momd"];
您希望加载已编译的数据模型,而不是xcdatamodeld文件:

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


()

这可能会在以后使用,但它不会告诉我发生了什么。这解决了问题,可能是我希望在未来的开发中使用的。我在阅读文档时看到了这一点,但没有抓住要点。我仍然不知道为什么
mergeModelFromBundles
不能工作。我过去使用过它,没有任何问题。
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Words" withExtension:@"momd"];