加载模型文件时崩溃。模型是从其他项目复制的

Crashing when loading model file. Model was copied from other project

我经常在将模型文件从一个项目移动到另一个项目时发生崩溃。知道为什么吗?如果我从 Xcode 创建它并手动创建实体,它不会发生。为什么?

lazy var managedObjectModel: NSManagedObjectModel = {
        // The managed object model for the application. This property is not optional. It is a fatal error for the application not to be able to find and load its model.
let modelURL = NSBundle.mainBundle().URLForResource("Model", withExtension: "momd")!
return NSManagedObjectModel(contentsOfURL: modelURL)!
}()

更新

文件扩展名不是momd,而是xcdatamodel。但这应该不是问题。 Model 和同名的上一个项目正在运行。

文件已添加到目标:

并且在控制台中您可以看到它存在于正确的位置:

您崩溃的行尝试从应用程序包中加载名为 Model.momd 的文件,如果该文件不存在则抛出异常 ("unexpectedly found nil while unwrapping an Optional value")

你是

  • 使用错误的文件名,即您的模型文件存在但未命名 Model.momd,或
  • 使用正确的文件名,但忘记在将模型文件添加到新项目时将其包含在应用程序的目标中。意思是,该文件存在于您的 Xcode 项目中,但您没有告诉 Xcode 在构建应用程序时实际包含它。

您可以通过在 Xcode 的 window 左侧的文件浏览器中选择未编译的模型文件(在您的情况下为 Model.xcdatamodel)来检查第二种可能性,然后查看右侧的文件检查器,在 "Target Membership" 下。确保选中应用程序目标:

我找到了 this,但没有用。顺便说一句,编译有问题。我删除了模型文件,添加了一个新的空模型,该模型具有以前的命名但现在来自 Xcode。然后手动编辑模型文件,并插入相关的xml标签。