在我的应用程序中,我正在关注CoreDataBooks以实现Core数据。我有一个项目列表,当用户选择任何项目时,详细信息屏幕会显示编辑选项。详细信息屏幕具有ManagedObjectContext的实例,该实例是列表中ManagedObjectContext实例的子代。 现在,当我在细节屏幕上编辑某些内容时,我正在更新从子MOC实例中获取的实体中的值。当我调用rollback child MOC时取消,它什么都不做。不确定为什么回滚不会将值恢复到上次保存的上一个值。
- (void)cancelAction:(id)sender
{
_isEditing = NO;
[_managedObjectContext rollback];
[self configureNavBar];
[table reloadData];
}
答案 0 :(得分:1)
您可以检查您的MOC中是否设置了UndoManager,即使用UndoManager。
阅读此回复可能对此有所帮助:undo all changes made in the child view controller
但是如果您关注CoreDataBooks示例,则可以看到方法
(void)addViewController:(AddViewController *)controller didFinishWithSave:(BOOL)save
表示只有在设置了标志保存时,子视图控制器才会保存它的MOC,否则它将在父视图控制器上调用保存,从而回滚到存储在Parent&的数据中#39; s ManagedObject数据。