SwiftUI Core Data:有条件地保存 NSManagedObjectContext

SwiftUI Core Data:有条件地保存 NSManagedObjectContext_第1张图片
NSManagedObjectContext - 韦弦zhy

我们一直在使用NSManagedObjectContext的save()方法将所有未保存的更改永久保存,但是我们还没有检查是否确实需要保存任何更改。通常这样做是可以的,因为只有在我们特别进行了更改(例如插入或删除数据)之后,才进行save()调用。

但是,通常也将批量更改保存在一起,以便一次保存所有内容,这对性能的影响较低。实际上,Apple特别声明,我们应该始终在调用save()之前检查未提交的更改,以避免 Core Data 做不需要的工作。

幸运的是,我们可以通过两种方式检查更改。首先,为每个托管对象提供一个hasChanges属性,当该对象具有未保存的更改时,该属性为 true。并且,整个上下文还包含一个hasChanges属性,该属性检查上下文拥有的任何对象是否有被更改。

因此,您应该始终先将其包装在检查中,而不是直接调用save(),如下所示:

if self.moc.hasChanges {
    try? self.moc.save()
}

这是一个很小的改变,但是很重要——没有必要做不需要的工作,无论他多小。尤其是当你做了足够多的非常小的工作后,你会意识到自己已经完成了一些非常大的工作。

译自 Conditional saving of NSManagedObjectContext

创建 NSManagedObject 子类 Hacking with iOS: SwiftUI Edition SwiftUI Core Data:使用约束确保对象是唯一的

赏我一个赞吧~~~

你可能感兴趣的:(SwiftUI Core Data:有条件地保存 NSManagedObjectContext)