【问题标题】:Xcode Core Data template trying to load managed object model with a wrong extensionXcode Core Data 模板尝试加载带有错误扩展名的托管对象模型
【发布时间】:2015-07-13 06:41:18
【问题描述】:

我创建了一个应用并在其中启用了 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)!
    }()

但在运行时,我遇到了一个致命错误,因为我强制解开一个 nil 的可选:我的应用程序包中没有 MyAppName.momd
取而代之的是MyAppName.mom,我更改了modelURL 的扩展名,现在它可以正常工作了。

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

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

【问题讨论】:

    标签: ios xcode swift core-data


    【解决方案1】:
    • momd = 版本化妈妈的目录。

      有版本但没有版本:

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

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

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

    【讨论】:

    • 我在哪里可以看到我的核心数据模型是否有版本?
    • 不,它不可扩展。但我无法理解的是为什么这里有这个错误而不是其他项目?我刚刚创建了一个似乎没有版本控制的另一个,它成功加载了 .momd !
    • 称为模型 => 版本化,称为模型 => 未版本化 |很抱歉让您对可扩展性评论感到困惑
    • 哦,是的,实际上新项目有一个 .xcdatamodeld 扩展名,而我的只有 .xdatamodel 仍然无法理解为什么它的行为不像任何其他项目,但谢谢,现在我明白了.mom 和 .momd 之间的区别!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 2011-01-18
    相关资源
    最近更新 更多