0

我正在更新一个使用 CoreData 的应用程序。在完整版本中,我制作了它,以便用户可以将他/她自己的数据保存在数据库中(应用程序填充一个预填充的数据库)。

该应用程序是在 Xcode 4.2 上编写的,部署目标是 iOS 4.1,所以在 ARC 和 Storyboards 之前。

现在我想稍微更新一下,将部署目标设置为 5.1 并将代码调整为最新的 Xcode,因此实现 Storyboards 和 ARC,因为我现在已经习惯了,而且我发现维护此代码更直观。所以我从头开始了一个新项目,我构建了故事板,并从 1.0 版本中拖动了大部分内容。此外,我检查了 Build Phases 选项卡上的“Compile Sources”和“Copy Bundle Resources”是否正常,并且包括我拖过的所有内容。

但是我遇到了数据库问题。当我尝试运行应用程序时它崩溃告诉我:

'Cannot create an NSPersistentStoreCoordinator with a nil model'

所以我不确定我在这里做错了什么。我不想更改 CoreData 模型,因为一切都保持不变,我没有添加或删除任何实体或属性。所以我认为将旧模型拖到新项目就足够了。

这里有什么建议吗?我可以轻松地从头开始编写整个 codeData 内容,因为它并不是很复杂,但我相信购买完整版本并保存自定义数据的用户会非常沮丧。

任何建议都将受到欢迎。提前致谢!

4

1 回答 1

0

您需要检查您的 AppDelegate 方法managedObjectModel。确保它检索模型(检查NSLog语句)。很可能它与一些命名约定有关:

NSString *modelPath = [[NSBundle mainBundle] 
    pathForResource:@"Model" ofType:@"momd"];
NSURL *modelURL = [NSURL fileURLWithPath:modelPath];

专门检查您的modelPath.

此外,可能发生的情况是,当您导入模型时,您并没有真正导入所有文件。该模型实际上是一个名为的目录YourModel.xcdatamodeld,其中 finald大概代表“目录”。在 Finder 中,您实际上可以右键单击并选择Show Package Contents以确保必要的文件在那里(使用命令行更好)。里面应该有一个名为YourModel.xcdatamodel(不带d)的文件。在这方面应该至少有一个名为content(有时也是layout)的文件。它是一个简单的 XML 文件。

确保将所有这些都导入到您的项目中!

于 2012-06-16T12:23:56.287 回答