在我的应用程序中,我遵循 CoreDataBooks 来实现核心数据。我有一个项目列表,当用户选择任何项目时,会出现一个带有编辑选项的详细信息屏幕。详细信息屏幕具有 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
这表明只有当设置了标志 save 时, subview Controller 才会保存其 MOC,否则它将在父 View Controller 上调用 save,从而回滚到存储在父 View 的 ManagedObject 数据中的数据。
关于iOS Coredata 回滚不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12246952/