我收到了'Cannot create an NSPersistentStoreCoordinator with a nil model'
从设备删除我的应用程序后出错。我正在 iPad 设备上测试 iPhone 应用程序。我已经输入此代码来检查我是否有该文件AppDelegate.m
:
- (NSManagedObjectModel *)managedObjectModel {
if (__managedObjectModel != nil) {
return __managedObjectModel;
}
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"Name" withExtension:@"momd"];
if ([[NSFileManager defaultManager] fileExistsAtPath:[modelURL path]]) {
NSLog(@"%@", [modelURL path]); //This is printed because file exists
}
__managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
return __managedObjectModel;
}
问题是[NSManagedObjectModel initWithContentsOfURL]
返回零值。
我做了以下事情,但没有成功:
- 以此更改 ManagedObjectModel 实例化
__managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil];
- 清理构建文件夹和清理项目
- 重新启动 Xcode
- 重新启动计算机
- 将“妈妈”改为“妈妈”
-
.xcdatamodeld
位于复制捆绑资源和编译源中
- Renamed
.xcdatamodeld
并多次清理并关闭 Xcode 项目
- 关闭并打开设备
- 已删除文件夹:
$ cd /Users/john/Library/Developer/Xcode/DerivedData
- 更改了 sqlite 名称以强制生成数据库
- 从 devine 中(再次)删除了应用程序
我已经搜索解决方案几个小时了,但仍然找不到。
最后,经过两天的尝试解决这个问题,我在这里找到了解决方案:
如何创建神奇的 .xcdatamodeld 文件夹/包? https://stackoverflow.com/questions/4518000/how-to-create-the-magic-xcdatamodeld-folder-package/4518137#4518137
我现在正在完成其他开发人员启动的一个项目,似乎他没有将最新更改推送到存储库,但这些更改位于设备中的应用程序中,当我删除该应用程序时,我删除了正确的.xcdatamodeld
文件。问题是我只有一个MyApp.xcdatamodel
文件在项目中,这就是有一个的原因momd
似乎是空文件夹。
为了创建正确的数据模型层次结构,解决方案非常简单:
- 选择
MyApp.xcdatamodel
- 转到编辑器 > 添加模型版本...
这嵌入了MyApp.xcdatamodel
文件到MyApp.xcdatamodeld
。现在momd
文件夹中有mom
文件并且应用程序运行。现在唯一的问题是我有两个MyApp.xcdatamodel
,其中一个带有绿色选定图标,但两者具有相同的内容,因此没有问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)