我刚刚使用Xcode设置了一台新的开发机器,当我打开,构建并运行一个现有的核心数据项目(它仍能在我的旧机器上完美运行)时,我收到一条“无法创建一个NSPersistentStoreCoordinator与一个零模型“错误。
我已经阅读了与此错误相关的stackoverflow上的无数问题,感谢他们觉得我对iOS如何处理数据库对象模型有了更好的理解,据我所知,没有什么明显的错误
我正在使用我的托管对象模型的标准初始化方法,即......
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"project" withExtension:@"momd"];
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
...这是在我的旧机器上返回一个不错的NSManagedObjectModel,但在我的新机器上没有。
正在编译的包确实包含一个project.momd文件夹,该文件夹又包含一个project.mom文件,该文件与旧机器上的编译输出完全相同,但是一个运行,一个不运行!很沮丧!
我唯一能想到的是Xcode中的配置选项我没有在新机器上正确设置,但是非常感谢任何帮助或建议!
*更新*
我的新机器上的软件包包含Project.momd中的project.mom。在我的旧机器上,Project.mom在Project.momd中,我猜测模型名称区分大小写,所以我只需要解释为什么xcode以小写形式编译妈妈...
手动将project.mom重命名为捆绑包中的Project.mom确实解决了问题,尽管是暂时重新编译项目。
答案 0 :(得分:2)
打开xcdatamodeld“文件夹”(使用Finder中的“显示包内容”)以查看xcdatamodel文件是否具有相同的大小写。从理论上讲,xcdatamodeld
会被编译为momd
和xcdatamodel
到mom
。
请注意,iOS文件系统区分大小写,而OSX不是(至少默认情况下),因此这可能是您在不同计算机上获得不同结果的原因。