我正在为核心数据快速项目使用 Xcodes 自动生成的代码,该项目在应用程序委托中包含此功能:
func saveContext () {
if let moc = self.managedObjectContext {
var error: NSError? = nil
if moc.hasChanges && !moc.save(&error) {
// Replace this implementation with code to handle the error appropriately.
// abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
NSLog("Unresolved error \(error), \(error!.userInfo)")
abort()
}
}
}
当我的托管对象出现错误而不是打印包含错误详细信息的消息时,应用程序会因错误而崩溃EXC_BAD_INSTRUCTION
。
在文档中它说:
指向 NSError 对象的指针。您不需要创建 NSError 对象。如果您传递 NULL,则保存操作在第一次失败后中止。
error
应用程序是否因为nil而中止?这是一个错误还是这是预期的行为?(如果这是预期的,我应该采取什么方法从错误中恢复而不是崩溃?)
(我正在运行 Xcode 6.3.1)
编辑 1:错误在于moc.save
函数,而不是来自abort()
- 例如,注释掉 abort 不会停止崩溃,并且永远不会到达 NSLog。
编辑 2添加回溯的屏幕截图 (?)