如何回滚临时上下文的更改?

2024-01-31

我创建一个这样的临时上下文:

let temporaryContext = NSManagedObjectContext(concurrencyType: .PrivateQueueConcurrencyType)
temporaryContext.parentContext = Utility.managedObjectContext()
temporaryContext.performBlockAndWait({

    // .. here I have done some changes on temporaryContext

    let success = temporaryContext.save(nil)

    //GUI get updated, GUI use MAIN context 
})

我想回滚更改,所以我这样做:

temporaryContext.performBlockAndWait({                                
    temporaryContext.rollback()
    let success = temporaryContext.save(nil)

    //GUI not get restored to the default variable
})

但是没有效果,父上下文不会回滚,为什么呢?


你打电话时rollback它仅恢复该上下文中未保存的更改。在第一段代码中,您已经保存了这些更改,因此rollback不会做任何事。

当你打电话时save在第一个代码块中,所有更改都提交给父上下文,我认为在本例中,父上下文是主上下文。因为你还没有打电话save在主要上下文中,您仍然应该能够调用rollback在主上下文上删除主上下文中的那些更改。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何回滚临时上下文的更改? 的相关文章

随机推荐