在我的情况下,我将我的nsmanagedobjects变成了一行
let rows = self.fetchedResultsController.fetchedObjects as [Row]
在这一行之后我根据需要回滚更改
managedObjectContext?.rollback()
我应该使用rows变量的值。但由于rollback()函数,行中的更改也会被删除。
如何在rollback()函数调用后保留我的数据?
答案 0 :(得分:0)
"但由于rollback()功能,行中的更改也会被删除。"
那是因为这是具体记录的方法。文档说:
从撤消堆栈中删除所有内容,放弃所有插入和删除,并将更新的对象恢复为其上次提交的值。
调用rollback
的整个目的是消除上下文中任何未保存的更改,因此您描述的是预期的行为。
如果由于某种原因想要保持更改和调用rollback
,则必须将这些更改复制到不受托管对象上下文影响的某个位置,然后我想将它们复制回来稍后的。这将是一个痛苦的屁股,但它是可能的。
真正的问题是,为什么要调用rollback
- 一种专门用于撤消未保存更改的方法 - 如果您有更改,则不想撤消。