Swift 在不将更改持久化到另一个线程的情况下处理核心数据
我处理核心数据。有时我需要计算一些数据。当我计算数据时,我会对数据进行更改。但我不想在仍然能够读取原始数据的情况下保留这些更改 所以在函数中,我需要这样的东西:Swift 在不将更改持久化到另一个线程的情况下处理核心数据,swift,core-data,Swift,Core Data,我处理核心数据。有时我需要计算一些数据。当我计算数据时,我会对数据进行更改。但我不想在仍然能够读取原始数据的情况下保留这些更改 所以在函数中,我需要这样的东西: func doSomething() -> something { // Get data with Core Data // Set variables on those data to do calculations // return a value like X // Delete/forg
func doSomething() -> something {
// Get data with Core Data
// Set variables on those data to do calculations
// return a value like X
// Delete/forget all changes on the data in this function. I will not need it anymore
}
这样做可能吗?当然可以。在不同的托管对象上下文上执行工作,然后永远不要保存该上下文上的更改。
performBackgroundTask(:)
是一种很好的方法。你会这样做的
performBackgroundTask
创建新上下文。在下面的步骤中使用传递的闭包将数据从核心数据复制到结构,并在本地使用该结构