问题现象
在 CoreData 支持的 App 中,当我们新建或更新托管对象到一半突然出现错误时,应该禁止任何已发生的改变被写入内存或数据库中。不过,有时仍会出现始料未及的“意外”:
从上面的演示可以看到:即使在 Item 对象新建和更新途中出现错误后不执行后续的保存操作,但界面和数据库的内容仍然被更新了,这是怎么回事呢?
这是秃头码农们经常会忽略的问题,为了 App 的健壮和一致性我们应该坚决杜绝这种错误!
在本篇博文中,您将学到如下内容:
- 问题现象
- 1. “万恶之源”
- 1.1 新建或更新导致内存更改
- 1.2 新建或更新的结果被“意外”刷新到数据库
- 2. 基本解决思路
- 3. 新建出错的处理:“空”上下文
- 4. 更新出错的处理:“影子“上下文
- 5. 总结</