我的NSManagedObjectModel在路径正确的情况下返回nil。
NSString *modelKey = [NSString stringWithFormat:@"/%@/Model", name];
NSString *modelPath = [((Configuration *)[Configuration shared]) stringEntry:modelKey];
NSURL *modelURL = nil;
if ( ! [modelPath contains:@"://"] ) {
modelPath = PathForBundleResource( modelPath );
modelURL = [NSURL fileURLWithPath:modelPath];
}
NSManagedObjectModel *m = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
NSString * PathForBundleResource(NSString * relativePath)
NSString* resourcePath = [[NSBundle mainBundle] resourcePath];
return [resourcePath stringByAppendingPathComponent:relativePath];
我重置了模拟器,做了一个干净的构建,但没有任何帮助。
我是iPhone编程新手(特别是核心数据)。
感谢任何帮助。
编辑:我编辑了有关xcdatamodeld文件的原始帖子。它最初没有正确连接,但现在它仍然存在同样的问题。
编辑2:显然,xcdatamodel的名称在链接后对xcdatamodel的名称有一些变化。它现在正在运作。感觉很蠢。不知道如何删除这个问题。
答案 0 :(得分:58)
我重命名.xcdatamodeld文件后遇到了同样的问题。关闭并重新打开Xcode客户端解决了这个问题。
答案 1 :(得分:4)
我刚刚在不区分大小写的文件系统上更改了.xcdatamodeld文件名称(例如重构的“mydatastore.xcdatamodeld”到“MyDatastore.xcdatamodeld”)的情况后才遇到此问题。
该修复程序包含以上两个答案:
将数据模型文件重构为截然不同的名称,例如: “MyDatastoreTemporary.xcdatamodeld”
产品>清洁
关闭XCode。重新打开XCode和项目。
将数据模型文件重新形成其最终名称,例如: “MyDatastore.xcdatamodeld”
产品>清洁
关闭XCode。重新打开XCode和项目。
答案 2 :(得分:1)
我尝试了上述两个答案,但是对我来说修复它的方法是从/向Xcode项目中删除并重新添加.xcdatamodeld
文件。不需要清洁。由于某种原因,添加它似乎可以解决问题。
答案 3 :(得分:1)
我解决了问题,转移到了废弃模型.xcdatamodeld,然后又添加了它。
答案 4 :(得分:0)
迄今为止最安全的方法是,如果您尚未对模型进行版本化,则执行以下操作:
contents
的文件。将此文件复制到新命名的.xcdatamodeld /?。xcdatamodel目录下的相同位置。这适用于没有版本的基本型号。
答案 5 :(得分:0)
第一次运行项目时,我将扩展指定为 xcdatamodeld 。但那失败了,应该是妈妈。但我通过了一个零而不是妈妈,假设延期不是强制性的。但是对于nil, initWithContentsOfURL 失败,当我最终输入 momd 时,它运行正常。