在频率方面保存NSManagedObjectContext
的最佳做法是什么?仅在应用程序切换到后台或即将终止时才进行保存是否足够?假设使用托管对象的正常语义不受保存频率(从内存到SQLite)的影响,这是正确的。
(PS编辑指出问题"似乎是主观的,可能会被关闭"但该网站包含有关核心数据最佳实践的其他问题,所以我希望它没问题。)
答案 0 :(得分:1)
您应该将其保存在应用中的关键点。例如,如果您有一个要修改NSManagedObject
的屏幕,并且还需要cancelChangesButton
,那么您希望自己NSManagedObjectContext
保存进入此屏幕,您可以在其上调用undo
并放弃您在此屏幕上所做的所有更改。
如果你没有在一个周期中进行某种处理(NSManagedObject
,for
...),你基本上应该在使用while
时保存。但是,如果你这样做,你应该在退出周期后保存,不要在每个回合都调用保存,否则可能会减慢你的应用。
答案 1 :(得分:0)
我同时注意到,在删除作为多对多关系成员的托管对象时,保存也很方便/有用。只有在保存其托管对象上下文时,才会从表示该关系的集合中删除该对象。
在此之前,该集合仍包含已删除的对象(如果标记为删除),因此集合count
会产生意外结果(因为它仍包含已删除的对象),以及关系中的索引(如果它是一个有序的)也被相应的金额关闭。
总的来说,在这种情况下,调用save:
似乎比在不同点执行特殊计数和索引计算要简单得多。