0

在我的应用程序中,我正在关注 CoreDataBooks 以实现核心数据。我有一个项目列表,当用户选择任何项目时,会出现一个带有编辑选项的详细信息屏幕。详细信息屏幕有 ManagedObjectContext 的实例,它是列表中 ManagedObjectContext 实例的子级。现在,当我在详细信息屏幕上编辑某些内容时,我正在更新从子 MOC 实例获取的实体中的值。当我调用回滚子 MOC 时取消,它什么也不做。不知道为什么回滚没有将值恢复到上次保存的前一个值。

- (void)cancelAction:(id)sender
{
    _isEditing = NO;
    [_managedObjectContext rollback];
    [self configureNavBar];
    [table reloadData];
}
4

1 回答 1

1

你能检查一下你的 UndoManager 是否设置在你的 MOC 中,也就是说你是否正在使用 UndoManager。

阅读此响应可能对此有所帮助:撤消在子视图控制器中所做的所有更改

但是,如果您遵循 CoreDataBooks 示例,您可以看到方法

(void)addViewController:(AddViewController *)controller didFinishWithSave:(BOOL)save

这表明子视图控制器将仅在设置标志 save 时保存其 MOC,否则它将在父视图控制器上调用 save 从而回滚到存储在父 ManagedObject 数据中的数据。

于 2012-09-06T07:41:15.877 回答