什么时候用CoreData在iOS中明确保存?

我目前正在为iPaddevise一个简单的CoreData应用程序,而且我不确定什么时候必须明确保存。 我知道有自动保存; 不过,我觉得我需要明确地保存,以确保我的程序不会崩溃。 以下是该计划的简要概述:

〜这是一个表单程序,向用户显示一组文本字段和分段控件来填写。 (想想一个人填写一个调查,或回答关于他们的名字,年龄等问题)。

〜可以填写任意数量的这些字段。 没有一个是强制性的。

〜用户可以随时保存和加载表单,并可以一次保存多种不同的表单。 他们可以删除他们保存的文件

〜我目前正在使用核心数据存储这些数据,其中一个实体对象表示一个表单。 该实体对象包含用户已经完成的所有字段以及对每个字段的响应的列表。

〜我也有这个实体对象的NSManagedObject子类。 因此,每填写一个字段,我都会执行诸如currentForm.name = textfield.text

好吧,所以我的问题是,我什么时候必须明确保存? 如果我写代码,如currentForm.name = textfield.text核心数据执行立即保存或我必须明确告诉它这样做(假设我不想等待自动保存)? 有没有其他的时候我可能需要保存? 删除存储的文档后,我必须保存吗?

谢谢!

这是你如何保存

 NSError *error; if (![[AppDelegate managedObjectContext] save:&error]) { NSLog(@"there was an error in Save:%@",error); } 

我会保存“早,经常”,或至less在通知didEnterBackground

所以,没有“自动保存”,只是碰巧苹果已经设置的核心数据模板包含一个保存例程,当应用程序closures,这是一个更安全的保证,以确保您的用户不会丢失任何数据。

只要用户明确地保存了某些内容,或者在您认为有必要时,您就应该调用保存。

填好表格后,我会打电话保存。

currentNotification.name = textfield.text核心数据执行立即保存还是我必须明确告诉它这样做(假设我不想等待自动保存)?

不,更改将在NSManagedObjectContext中进行,但是直到在该上下文中显式调用save之后,数据将不会持久化到持久性存储中。

我还没有听说过核心数据自动保存? 你应该保存你的NSManagedObjectContext,只要你想保存你的数据。 下面是另外一个类似的问题: 用Cocoa和Core Data自动保存