我已经创建了一个应用程序并在其中启用了 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 = 版本化妈妈的目录。
有版本但没有版本:
妈妈 = 单例妈妈
(称为模型而不是建模):)
因此,如果您将 CoreData 模型设置为“版本化”,那么您就有了一个妈妈。在这种情况下,什么是版本控制? 每次数据库更改时,您都会有一个妈妈匹配那个精确的“快照”并能够升级数据库,核心数据需要所有妈妈..所以您有一个装满妈妈的妈妈(一个文件夹)
这应该可以帮助您选择正确的扩展程序;)
关于ios - Xcode 核心数据模板试图加载具有错误扩展名的托管对象模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31376866/