核心数据,validateForInsert:/ validateForUpdate:即使取消它们也要创建一个实体

时间:2012-03-22 01:09:33

标签: iphone objective-c ios core-data

iPhone forms, where do you put your validation?

人们建议我直接将我的文本字段的值放在我的核心数据实体中,这是我做的(参见我的第二次编辑)。事情是,当一个人更新实体时,因为我直接放入用户在我的实体中键入的值,即使我不保存我的ManagedObjectContext,我的TableViewController(使用NSFRC)也会更新用户输入的最新信息(即使他按下取消)。如果我重新启动应用程序,因为它没有保存,一切都恢复正常。

我该如何避免这种情况?

1 个答案:

答案 0 :(得分:4)

我假设您对两个viewControllers使用相同的NSManagedObjectContext。您可以为每个viewController使用单独的NSManagedObjectContext。如果您使用的是iOS 5.1,请将第一个viewController的managedObjectContext(MOC)设置为第二个viewControllers managedObjectContext的父级。因此,如果您通过[theContext save]保存第二个视图的MOC,它将自动将更改与第一个MOC合并。如果您不想保留更改,只需将该视图从导航堆栈中弹出即可。

MOC是scratchpad。所以实质上你想要使用第二个viewController作为便笺簿,直到你点击保存。