保存NSManagedObjectContext的最佳实践

时间:2014-06-05 04:22:02

标签: ios core-data

在频率方面保存NSManagedObjectContext的最佳做法是什么?仅在应用程序切换到后台或即将终止时才进行保存是否足够?假设使用托管对象的正常语义不受保存频率(从内存到SQLite)的影响,这是正确的。

(PS编辑指出问题"似乎是主观的,可能会被关闭"但该网站包含有关核心数据最佳实践的其他问题,所以我希望它没问题。)

2 个答案:

答案 0 :(得分:1)

您应该将其保存在应用中的关键点。例如,如果您有一个要修改NSManagedObject的屏幕,并且还需要cancelChangesButton,那么您希望自己NSManagedObjectContext保存进入此屏幕,您可以在其上调用undo并放弃您在此屏幕上所做的所有更改。

如果你没有在一个周期中进行某种处理(NSManagedObjectfor ...),你基本上应该在使用while时保存。但是,如果你这样做,你应该在退出周期后保存,不要在每个回合都调用保存,否则可能会减慢你的应用。

答案 1 :(得分:0)

我同时注意到,在删除作为多对多关系成员的托管对象时,保存也很方便/有用。只有在保存其托管对象上下文时,才会从表示该关系的集合中删除该对象。

在此之前,该集合仍包含已删除的对象(如果标记为删除),因此集合count会产生意外结果(因为它仍包含已删除的对象),以及关系中的索引(如果它是一个有序的)也被相应的金额关闭。

总的来说,在这种情况下,调用save:似乎比在不同点执行特殊计数和索引计算要简单得多。