0

我刚刚设置了一台使用 Xcode 进行开发的新机器,当我打开、构建和运行现有的核心数据项目(它仍然在我的旧机器上完美运行)时,我收到“无法使用 nil 模型创建 NSPersistentStoreCoordinator “ 错误。

我已经阅读了有关此错误的无数关于 stackoverflow 的问题,感谢他们,我对 iOS 如何处理数据库对象模型有了更好的理解,据我所知,没有什么明显的问题。

我正在为我的托管对象模型使用标准初始化方法,即...

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"project" withExtension:@"momd"];
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];

...在我的旧机器上返回一个不错的 NSManagedObjectModel,但在我的新机器上返回 nil。

正在编译的包确实包含一个 project.momd 文件夹,该文件夹又包含一个 project.mom 文件,它与我的旧机器上的编译输出完全相同,但一个运行而一个不运行!非常令人沮丧!

我唯一能想到的是 Xcode 中有一些配置选项我没有在新机器上正确设置,但任何帮助或建议将不胜感激!

* 更新 *

我的新机器上的包在 Project.momd 中包含一个 project.mom。在我的旧机器上,Project.mom 在 Project.momd 内部,我猜模型名称是区分大小写的,所以我只需要破译为什么 xcode 以小写形式编译 mom...

在包中手动将 project.mom 重命名为 Project.mom 确实可以解决问题,尽管在重新编译项目之前是暂时的。

4

1 回答 1

2

打开您的 xcdatamodeld “文件夹”(使用 Finder 中的“显示包内容”)查看 xcdatamodel 文件是否具有相同的大小写。理论上,xcdatamodeld被编译为momd和。xcdatamodelmom

请注意,iOS 文件系统区分大小写,而 OSX 不区分大小写(至少默认情况下),因此这可能就是您在不同机器上得到不同结果的原因。

于 2013-03-15T14:27:27.010 回答