TL; DR版:是否有-[NSManagedObjectContext save:]
可能失败的可能原因的明确清单?我正在查看CoreDataErrors.h
,但不清楚哪个键与NSDetailedErrorsKey
有关。
背景:我正在维护一个使用Swift和Objective-C组合编写的送货应用程序。它使用JSQCoreDataKit
。其他人最初编写了代码。
我们遇到了无法重现的生产崩溃。我们可以从堆栈跟踪中看出,在NSManagedObjectContext
保存失败后,EXC_BAD_ACCESS
尝试将NSError
记录到控制台时,它在错误处理程序中崩溃。保存失败在子上下文中,我们知道当时正在修改的模型类。
因此我们可以告诉保存失败,但我们没有关于保存失败原因的详细信息。
我们希望从保存失败的原因向后工作,希望为崩溃制作复制品,以便测试任何可能的修复。
崩溃实际上是保存失败的副作用。因此,虽然我们想要修复崩溃,但我们还需要找出保存失败的原因。
对于95%的用户,保存没有问题。
该模型有一些非可选字段,数据来自从服务器响应中解析的JSON。在这个阶段,我们没有理由怀疑服务器正在向我们发送不良数据。
是否有人知道我们可以解决的保存失败的可能原因的最终列表,从而消除了选项?
到目前为止,我已经意识到了:
NSPersistentStoreSaveConflictsErrorKey
)。但是,当从子环境保存到父环境时,是否可以使用此功能并不清楚。答案 0 :(得分:1)
永远不会成为失败-save:
且没有错误。每当我看到这种情况,我的代码就会出错。
您是否可以通过显示错误位置周围的代码来更新问题?
保存的可能失败是:
NSPersistentStore
nil
NSManagedObjectContext
(这将介绍您描述的案例)除了最后一个之外的所有这些都会产生一个要询问的错误对象。