2

我目前正在为 iPad 开发一个简单的 CoreData 应用程序,但我不确定何时必须明确保存。我知道有自动保存;但是,我觉得我需要明确保存以确保我的程序不会崩溃。以下是该计划的简要概述:

~ 这是一个表单程序,向用户提供一组文本字段和分段控件以供填写。(想想一个人填写调查,或回答有关他们的姓名、年龄等问题)。

~ 可以填写任意数量的这些字段。它们都不是强制性的。

~ 用户可以随时保存和加载他们的表单,他们可以同时保存多个不同的表单。他们可以删除他们保存的文档

~ 我目前使用核心数据存储这些数据,其中一个实体对象代表一个表单。此实体对象包含用户已完成的所有字段的列表以及他们对每个字段的响应。

~ 我也有这个实体对象的 NSManagedObject 子类。因此,每次填写一个字段时,我都会做一些事情,例如currentForm.name = textfield.text.

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

谢谢!

4

3 回答 3

4

因此,没有“自动保存”,碰巧Apple设置的Core Data模板包含一个在应用程序关闭时的保存例程,这更像是一个故障保险,以确保您的用户不会丢失任何数据。

每当您的用户明确保存某些内容或您认为有必要时,您都应该调用 save 。

用户填写完表格后,我会调用 save 。

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

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

于 2012-06-13T17:46:01.680 回答
2

我没有听说过 Core Data 自动保存?每当您想保留数据时,都应该在 NSManagedObjectContext 上调用 save 。这是另一个与您类似的问题:Auto-save with Cocoa and Core Data

于 2012-06-13T17:47:40.143 回答
0

这是你如何保存

NSError *error;

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

我会“尽早并经常”保存,或者至少保存在 didEnterBackground 的通知中

于 2012-06-13T17:45:15.343 回答