iphone - 保存 managedObjectContext 时如何处理错误?

标签 iphone ipad ios core-data

如果在执行 -[NSManagedObjectContext save:] 时出现错误,恢复到现有持久存储的适当策略是什么?

-[NSManagedObjectContext 回滚]?

或者我应该在尝试保存之前在文件系统上保存存储的副本:然后,如果出现错误,请使用 -[NSPersistentStoreCoordinator setURL:forPersistentStore:] 将存储设置为已保存的存储?

感谢您的指点。

贡萨洛

最佳答案

当保存失败时,您(作为程序员)做错了什么。

我编写了一些非常复杂的 Core-Data 应用程序,但从未在生产环境中遇到过保存失败的情况。

确保用户可以输入的值可以正确保存。

这意味着如果您有非可选关系,则在用户为此关系选择实体之前不要接受“完成”按钮。或者设置一个默认的关系实体。
如果您需要特殊格式的 NSString,请在接受之前验证该字符串。

这对用户来说也更方便。如果你告诉他 10 分钟前你做错了什么,这就是我删除你所有更改的原因 他会想 WTF?。如果您告诉他 您尝试输入的值的格式不正确。请使用 xxxxx 他会认为 Ok, let's change it.

现在,在您确保保存永远不会失败之后,您可以将 [context rollback] 放入其中,因为您永远不应该说永不。
但在执行此操作之前,您应该询问用户是否要向您发送错误日志。因为保存不应该失败。

关于iphone - 保存 managedObjectContext 时如何处理错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5201305/

相关文章:

html - Mailchimp 嵌入表格 : too many recent signup requests on iOS 10 devices

iphone - 使用 CorePlot 库绘制多个图形

iphone - 访问调用的电话号码

iphone - Collection View 中的单元格不可见

html - '背景大小 :cover' does not work in ipad

iphone - Objective C 中的套接字编程

iphone - 关闭 iPad 键盘

ios - RxSwift 的结构 View 模型

设置预测时的ios 8键盘问题

ios - 未在 subview 上调用 touchesBegan()