【问题标题】:CoreData model not working properlyCoreData 模型无法正常工作
【发布时间】:2012-06-16 08:47:08
【问题描述】:

我正在更新一个使用 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 内容,因为它并不是很复杂,但我相信购买完整版本并保存自定义数据的用户会非常沮丧。

非常欢迎任何建议。提前致谢!

【问题讨论】:

标签: ios core-data xcode4.3 core-data-migration xcdatamodel


【解决方案1】:

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

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

专门检查您的modelPath

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

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

【讨论】:

  • 在我发布问题后不久,我注意到 Xcode 编辑器顶部的路径为两个数据模型显示了不同的内容。在“旧”上,它显示了另一个文件,所以我考虑检查包内容。我做了一个 1:1 的副本,效果很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-08
相关资源
最近更新 更多