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