- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我最近将应用程序的语法从 Swift 2
升级到 Swift 3
,应用程序现在崩溃并出现致命的错误
:
unexpectedly found nil while unwrapping an Optional value.
Swift 2 是:
private lazy var managedObjectModel: NSManagedObjectModel = {
let modelURL = NSBundle.mainBundle()
.URLForResource(self.modelName,
withExtension: "momd")!
return NSManagedObjectModel(contentsOfURL: modelURL)!
}()
Swift 3 的更新是:
private lazy var managedObjectModel: NSManagedObjectModel = {
let modelURL = Bundle.main
.url(forResource: self.modelName,
withExtension: "momd")!
return NSManagedObjectModel(contentsOf: modelURL)!
}()
Swift 3 不喜欢“momd”扩展名的原因是什么?该应用程序在 Swift 2 中运行,用户无需任何预加载即可从应用程序内部构建数据库,因此正在创建和使用 url 文件 modelName.momd。 modelName 声明为:
let modelName = "GameCountPro"
最佳答案
我在 AppDelegate 中遇到了同样的问题
let modelURL = Bundle.main.url(forResource: "CoreDataPractise", withExtension: "momd")!
'forResource'
中的名称应该与您的数据模型完全匹配
"CoreDataPractise.xcdatamodeld".
因为 Swift 3.1 没有提供 CoreData 堆栈样板代码,我从另一个旧项目复制了所有惰性变量代码,该项目实际上有名为 "CoreDataDemo.xcdatamodeld"
的数据模型。由于这种不匹配,应用程序崩溃了,尽管在“强制展开”点的崩溃是一个误导,让你认为这可能是由于强制展开。
此修复后立即解决了 momd!
崩溃问题。
在您的情况下,检查“URLForResource(self.modelName,...”是否准确地为您提供了项目中的数据模型名称,而不是 "optional(dataModel name)"
关于swift - Swift 2 和 Swift 3 中的核心数据 momd 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39981154/
最近,我在大量处理核心数据,而让我感到烦恼的是,您创建了一个.xcdatamodeld来创建您的基本结构,然后通过xcode将其转换为.momd文件。 我的问题是:是否可以通过编程方式进行转换,而不是
我的应用程序使用 CoreData,模型名为:mupo-ios.xcdatamodel。该模型是原始模型的第二个版本:Model.xcdatamodeld。我通过文档使用 managedObjectC
我使用 Core Data 创建了一个主从应用程序。并且有一个简单的代码获取模型文件的路径: NSURL *modelURL = [[NSBundle mainBundle] URLForResour
大家好,我看到了this有疑问并用过 self.managedObjectContent= [NSManagedObjectModel mergedModelFromBundles:nil]; 但是,
对于我使用 CoreData 的 iOS 应用程序,我需要一个模型,其中某些实体属性在应用程序的 iPhone 和 iPad 版本之间有所不同。为此,我使用 initWithContentsOfURL
天哪!我搞砸了! 我是 Core Data 菜鸟,正在开发我的第一个 iOS 应用程序。经过多次堆栈溢出后,我正在使用这段代码: NSString *path = [[NSBundle mainBun
我在 iOS 9.0、iPhone4 Simulator 和 Xcode 9.2 中使用 Core 数据。 加载 momd 文件时应用程序崩溃并显示 nil 值。 尽管我已经添加了 Address.x
我最近将应用程序的语法从 Swift 2 升级到 Swift 3,应用程序现在崩溃并出现致命的错误: unexpectedly found nil while unwrapping an Option
在我的 iOS 应用程序中打开加载 map View 时出现错误。 map View 加载正常并出现在屏幕上,但是它没有加载到我初始化 map View 时设置的位置。 这是我用来实现 map Vie
我是一名优秀的程序员,十分优秀!