objective-c - 从 saveContext 中的核心数据错误中恢复

标签 objective-c ios cocoa-touch core-data

在支持 Core Data 的 iOS 应用程序中,为应用程序委托(delegate)生成的代码包含 saveContext 函数,评论建议将 abort() 替换为从中恢复的代码错误。

是否有一些标准样板(即非特定于应用程序的)代码实际上可以从此类错误中恢复?

我正在考虑从 Core Data 中删除所有数据。那会有帮助吗?它会覆盖任何类型的错误吗?

最后,我该如何测试这个恢复代码?

最佳答案

本身没有样板代码,但通常指南建议向用户显示错误消息(很可能是 UIAlertView)。当存在无效对象(具有未设置的非可选属性)以及一个对象具有两个版本时(当对象在一个上下文中创建并在另一个上下文中“刷新”时会发生这种情况),通常上下文保存会失败。前一种情况要求显示验证错误,并让用户有机会在执行保存的同一屏幕中修复它们。后一种情况具有 CoreData 说明书中讨论的背景合并技术(它采用删除对象的一个​​版本或合并更改)。

另外,根据我的经验,我认为在 AppDelegate 中保存上下文并不需要太多。我建议为对象创建创建单独的上下文,并让应用程序委托(delegate)仅将初始 MOC 传递给窗口的 rootViewController

关于objective-c - 从 saveContext 中的核心数据错误中恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7440375/

相关文章:

ios - CoreData insertNewObjectForEntityForName 和 executeFetchRequest 返回 nil

iphone - 继承 UIViewController 类和 XIB

objective-c - OSX - 从缩放按钮禁用全屏模式?

ios - 如何防止 UIwebView 刷新?

iphone - 从 XCODE 中使用 SVN 的 BLAME 命令

ios - 调用 viewDidLoad 时,单元格数据不会显示在 TableView 中

ios - 在 iPad 上查看时,应用程序未以 iPhone 分辨率运行

ios - 崩溃 : NSInternalInconsistencyException - Invalid rowCache row is nil

iphone - 在iPhone上创建 "chat bubble",如Tweetie

iphone - 为什么在 iPhone UIWebView 中滚动时计时器会停止?