ios - Xcode 核心数据模板试图加载具有错误扩展名的托管对象模型

标签 ios xcode swift core-data

我已经创建了一个应用程序并在其中启用了 Core Data,它正在尝试使用以下代码加载托管对象模型:

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("MyAppName", withExtension: "momd")!
    return NSManagedObjectModel(contentsOfURL: modelURL)!
    }()

但是在运行时,我遇到了一个 fatal error ,因为我强行解包了一个 nil 的可选值:我的应用程序包中没有 MyAppName.momd< br/> 相反,有 MyAppName.mom,我更改了 modelURL 的扩展名,现在它工作正常。

但是为什么会出现这个问题呢?我是 Core Data 的新手,但上次尝试时我从未遇到过这个问题!为什么我的项目的文件扩展名发生了变化?

我如何确定在加载托管对象模型时,它将是具有良好扩展名的模型?如果你想发布一个应用程序,不知道你必须期待什么文件扩展名,这并不是一种真正令人放心的感觉!

最佳答案

  • momd = 版本化妈妈的目录。
    enter image description here
    有版本但没有版本:
    enter image description here

  • 妈妈 = 单例妈妈
    (称为模型而不是建模):)

因此,如果您将 CoreData 模型设置为“版本化”,那么您就有了一个妈妈。在这种情况下,什么是版本控制? 每次数据库更改时,您都会有一个妈妈匹配那个精确的“快照”并能够升级数据库,核心数据需要所有妈妈..所以您有一个装满妈妈的妈妈(一个文件夹)

这应该可以帮助您选择正确的扩展程序;)

关于ios - Xcode 核心数据模板试图加载具有错误扩展名的托管对象模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31376866/

相关文章:

swift - 如何在 Heroku 上使用 swift 安全地处理 Slack 的 API token ?

swift - 为什么要小写uuid?

ios - 我如何设置NavigationController的根viewController

ios - swift 不使用 UIDatePicker 更新 textfield.text

ios - 将渐变应用于按钮不会 swift 反射(reflect)

iphone - 创建同一应用程序、不同 Assets 的自定义构建的最简单方法

xcode - SwiftUI:未触发自定义按钮的操作

ios - 编译 iOS 静态库以解决 Adob​​e Native Extension 链接错误

swift - 在 RealmSwift 中存储 float 数组

ios - 使用 Eureka 框架更改表格样式