Iphone 从设备中删除应用后,无法创建具有nil模型的NSPersistentStoreCoordinator
从设备中删除我的应用程序后,我收到一个Iphone 从设备中删除应用后,无法创建具有nil模型的NSPersistentStoreCoordinator,iphone,ios,xcode,core-data,Iphone,Ios,Xcode,Core Data,从设备中删除我的应用程序后,我收到一个“无法创建无型号的NSPersistentStoreCoordinator”错误。我正在iPad设备上测试iPhone应用程序。我将此代码用于检查文件是否位于AppDelegate.m: - (NSManagedObjectModel *)managedObjectModel { if (__managedObjectModel != nil) { return __managedObjectModel; } NSUR
“无法创建无型号的NSPersistentStoreCoordinator”
错误。我正在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]
返回的是nil值。
我做了以下事情,但没有成功:
更改managedObjectModel实例化\uu managedObjectModel=[NSManagedObjectModel mergedModelFromBundles:nil]代码>
.xcdatamodeld
位于复制捆绑资源和编译源代码中.xcdatamodeld
并多次清理和关闭Xcode项目$cd/Users/john/Library/Developer/Xcode/DerivedData
我已经搜索解决方案好几个小时了,但仍然找不到。最后,在尝试解决此问题两天后,我在这里找到了解决方案: 我现在正在完成一个其他开发人员启动的项目,他似乎没有将最新的更改推送到repo,但这些更改都在设备中的应用程序中,当我删除应用程序时,我删除了正确的
.xcdatamodeld
文件。问题是我在项目中只有一个MyApp.xcdatamodel
文件,这似乎就是为什么有一个momd
空文件夹的原因
为了创建正确的数据模型层次结构,解决方案非常简单:
MyApp.xcdatamodel
MyApp.xcdatamodel
文件嵌入到MyApp.xcdatamodeld
中。现在momd
文件夹中有mom
文件,应用程序运行正常。现在唯一的问题是,我有两个MyApp.xcdatamodel
,一个带有绿色选中图标,但都具有相同的内容,因此没有问题
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"select xcdatamodeld" withExtension:@"momd"];
为资源名称选择准确的url。这相对简单 如果您的xcdatamodel文件没有版本:请在managedObjectModel声明中使用扩展名“mom”。
如果您的xcdatamodel有版本,您应该使用“momd”。我支持再次构建我的第一个iOS应用程序。今天,我遇到了这样一个错误:“无法使用nil模型创建NSPersistentStoreCoordinator”。 事实上,这很容易解决。 请填写这行代码:
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"[name]" withExtension:@"momd"];
您填写的[名称]与模型文件(.xcdatamodeld)相同。
例如,我得到了一个TipRecord.xcdatamodeld,那么这一行应该是:
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"TipRecord" withExtension:@"momd"];
它在模拟器上工作吗?你能在Xcode中打开
.xcdatamodeld
文件吗?艾伦,我能在Xcode中打开.xcdatamodeld
文件,但应用程序在模拟器中不工作。它启动了,但只显示一个黑屏。我想我找到了一些东西。。。我刚刚意识到,我没有删除/Users/john/Library/Developer/Xcode/DerivedData
中的所有文件,因此当我这样做时,模拟器运行正常,甚至managedObjectModel。有没有办法删除设备中的这些文件?从设备中删除应用程序应该会删除这些文件。现在,应用程序在模拟器中启动(仅当我删除衍生数据并重置内容和设置时),但我收到相同的managedObjectModel
错误。