我目前正在为iPad制作一个简单的CoreData应用程序,我不确定何时必须明确保存。我知道有自动保存;但是,我觉得我需要明确保存,以确保我的程序不会崩溃。以下是该计划的简要概述:
〜这是一个表单程序,为用户提供一组文本字段和分段控件来填写。 (想一个人填写调查,或回答有关他们的姓名,年龄等的问题)。
〜可以填写任意数量的这些字段。这些都不是强制性的。
〜用户可以随时保存和加载表单,并且可以同时保存多个不同的表单。他们可以删除他们保存的文件
〜我目前正在使用核心数据存储此数据,其中一个实体对象代表一个表单。此实体对象包含用户已完成的所有字段及其对每个字段的响应的列表。
〜我还有一个这个实体对象的NSManagedObject子类。因此,每次填写字段时,我都会执行currentForm.name = textfield.text
。
好的,我的问题是,我何时必须明确保存?如果我写代码如currentForm.name = textfield.text
核心数据执行立即保存或我是否必须明确告诉它这样做(假设我不想等待自动保存)?有没有其他时间我可能需要保存?删除存储的文档后,是否必须保存?
谢谢!
答案 0 :(得分:4)
所以,没有“自动保存”,苹果设置的核心数据模板恰好包括应用程序关闭时的保存例程,这更加安全,以确保您的用户不会丢失任何数据。
只要您的用户明确保存某些内容或您认为有必要,就应该调用save。
我会在用户填写表单后调用save。
currentNotification.name = textfield.text核心数据执行立即保存还是我必须明确告诉它这样做(假设我不想等待自动保存)?
不会,更改将在NSManagedObjectContext中进行,但在该上下文中显式调用save之前,数据将不会持久保存到持久性存储中。
答案 1 :(得分:2)
我没有听说过核心数据自动保存?每当要保留数据时,都应该在NSManagedObjectContext上调用save。以下是您的另一个类似问题:Auto-save with Cocoa and Core Data
答案 2 :(得分:0)
以下是保存方式
NSError *error;
if (![[AppDelegate managedObjectContext] save:&error])
{
NSLog(@"there was an error in Save:%@",error);
}
我会保存“早期和经常”或至少保存在didEnterBackground的通知