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 和回滚不起作用,弹簧集成测试

PHP PDO事务回滚不起作用

Node-Mysql 事务回滚不起作用

Spring启动集成测试回滚不起作用

第二个objects.create无法创建记录后Django回滚不起作用

@Transactional注解事务不回滚不起作用无效