如何独立地将fetchedObjects分配给变量

时间:2015-04-08 23:52:46

标签: swift core-data nsfetchedresultscontroller

在我的情况下,我将我的nsmanagedobjects变成了一行

let rows = self.fetchedResultsController.fetchedObjects as [Row]

在这一行之后我根据需要回滚更改

managedObjectContext?.rollback()

我应该使用rows变量的值。但由于rollback()函数,行中的更改也会被删除。

如何在rollback()函数调用后保留我的数据?

1 个答案:

答案 0 :(得分:0)

"但由于rollback()功能,行中的更改也会被删除。"

那是因为这是具体记录的方法。文档说:

  

从撤消堆栈中删除所有内容,放弃所有插入和删除,并将更新的对象恢复为其上次提交的值。

调用rollback的整个目的是消除上下文中任何未保存的更改,因此您描述的是预期的行为。

如果由于某种原因想要保持更改调用rollback,则必须将这些更改复制到不受托管对象上下文影响的某个位置,然后我想将它们复制回来稍后的。这将是一个痛苦的屁股,但它是可能的。

真正的问题是,为什么要调用rollback - 一种专门用于撤消未保存更改的方法 - 如果您有更改,则不想撤消。