我的应用中有一些NSManagedObject
子类,我正在尝试了解何时以及如何保存更改。
我将尝试解释自己,例如,类A
是NSManagedObject
子类
在应用程序生命周期中,我做了:
App launched
...
Create an instance of class A
...
Change some properties of A instance
...
App go to background
...
App becomes active again
...
Change some more properties of A instance
...
App terminates
我什么时候需要调用[context save:] ?? 在A实例中的每次更改后,我都会调用它吗?或者我可能只在应用程序转到后台时才调用它? 我应该在创建或删除任何A实例后调用它吗?
答案 0 :(得分:1)
在您调用save之前,数据不会保存到持久存储中。因此,这取决于您在应用中的需求。如果您希望它能够恢复它曾经拥有的最后一个值,那么您应该在每次修改后保存。
轻松更改只是在进行修改后保存。
你可以做一些更有趣的事情,比如只在一段时间后保存,所以很多变化被组合在一起......并抓住任何将你的应用程序放在后台然后保存的事件...... / p>
但是,这就是UIManagedDocument为您自动执行的操作,因此您可以使用它。
答案 1 :(得分:1)
一个不错的方法是将UIManagedDocument放在AppDelegate中。然后,只要应用程序发生某些变化(如崩溃),您就可以调用[上下文保存]。我想遵循的顺序是:
UIManaged文档将为您保存上下文。
查看UIManagedDocument文档以配置持久性存储选项(您向UIManagedDocument实例发送选项的NSDictionary,请参阅下面链接的第一个示例)。
UIManagedDocument文档: http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIManagedDocument_Class/Reference/Reference.html
另请参阅iTunesU上免费提供的Paul Hegarty的iPhone和iPad应用开发课程的CoreData讲座和演示(讲座13和14)(2011年秋季)。
答案 2 :(得分:1)
根据您所做的更改量以及每次更改需要保存的数据量,您可以选择保存一点或多少。如果您只是保存字符串或数字或bool,请在更改完成后立即调用save:on your context。
如果是大量数据,您可能希望更改您的更改,然后将其保存在后台队列中,这样您就不会阻止主队列。这样您就不会等到后台执行保存。
添