我创建一个这样的临时上下文:
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(使用前将#替换为@)