iOS Coredata 回滚不起作用
Posted
技术标签:
【中文标题】iOS Coredata 回滚不起作用【英文标题】:iOS Coredata rollback is not working 【发布时间】:2012-09-03 11:28:42 【问题描述】:在我的应用程序中,我正在关注 CoreDataBooks 以实现核心数据。我有一个项目列表,当用户选择任何项目时,会出现一个带有编辑选项的详细信息屏幕。详细信息屏幕有 ManagedObjectContext 的实例,它是列表中 ManagedObjectContext 实例的子级。 现在,当我在详细信息屏幕上编辑某些内容时,我正在更新从子 MOC 实例获取的实体中的值。当我调用回滚子 MOC 时取消,它什么也不做。不确定为什么回滚不会将值恢复到上次保存的值。
- (void)cancelAction:(id)sender
_isEditing = NO;
[_managedObjectContext rollback];
[self configureNavBar];
[table reloadData];
【问题讨论】:
它确实有效。我在代码中犯了其他一些错误,即回滚后再次设置编辑值。 【参考方案1】:你能检查你的 UndoManager 是否在你的 MOC 中设置,也就是说你是否正在使用 UndoManager。
阅读此回复可能会对此有所帮助:undo all changes made in the child view controller
但是如果你按照 CoreDataBooks 的例子你可以看到方法
(void)addViewController:(AddViewController *)controller didFinishWithSave:(BOOL)save
这表明子视图控制器只有在设置了标志 save 时才会保存其 MOC,否则它将在父视图控制器上调用 save 从而回滚到存储在父 ManagedObject 数据中的数据。
【讨论】:
以上是关于iOS Coredata 回滚不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Spring @Transactional 和回滚不起作用,弹簧集成测试