gpt4 book ai didi

swift - 快速保存 NSManagedObjectContext 时出错

转载 作者:搜寻专家 更新时间:2023-11-01 05:41:19 26 4
gpt4 key购买 nike

我正在为核心数据快速项目使用 Xcodes 自动生成的代码,该项目在应用程序委托(delegate)中包含此功能:

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 错误。

the documentation它说:

A pointer to an NSError object. You do not need to create an NSError object. The save operation aborts after the first failure if you pass NULL.

应用程序是否因为 error 为 nil 而中止?这是错误还是这是预期的行为? (如果它是预期的,我应该采取什么方法来从错误中恢复而不是崩溃?)

(我正在运行 Xcode 6.3.1)

编辑 1: 错误出现在 moc.save 函数中,而不是来自 abort() - 例如注释掉 abort 不会停止崩溃,并且永远不会到达 NSLog。

EXC_BAD_INSTRUCTION arghhhh

编辑 2 添加回溯(?)的屏幕截图

Backtrace Sadness

最佳答案

我首先调查了导致错误的原因。我以为这是一个简单的模型验证错误(试图保存一个缺少必需属性的对象),但我的所有属性都是可选的。

事实证明,问题出在我试图保存不采用 NSCoding 的对象数组的 Transformable 属性上。

我已经修复了这个问题并尝试故意导致其他类型的错误(例如模型验证)并且 save 功能按预期工作。

遗憾的是我没有得到关于可变形事物的合理错误,但很高兴它在其他方面有效,并且是一次很好的学习体验!

关于swift - 快速保存 NSManagedObjectContext 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29870218/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com