如果在执行 -[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/