
我们一直在使用NSManagedObjectContext的save()
方法将所有未保存的更改永久保存,但是我们还没有检查是否确实需要保存任何更改。通常这样做是可以的,因为只有在我们特别进行了更改(例如插入或删除数据)之后,才进行save()
调用。
但是,通常也将批量更改保存在一起,以便一次保存所有内容,这对性能的影响较低。实际上,Apple特别声明,我们应该始终在调用save()
之前检查未提交的更改,以避免 Core Data 做不需要的工作。
幸运的是,我们可以通过两种方式检查更改。首先,为每个托管对象提供一个hasChanges
属性,当该对象具有未保存的更改时,该属性为 true。并且,整个上下文还包含一个hasChanges
属性,该属性检查上下文拥有的任何对象是否有被更改。
因此,您应该始终先将其包装在检查中,而不是直接调用save()
,如下所示:
if self.moc.hasChanges {
try? self.moc.save()
}
这是一个很小的改变,但是很重要——没有必要做不需要的工作,无论他多小。尤其是当你做了足够多的非常小的工作后,你会意识到自己已经完成了一些非常大的工作。
创建 NSManagedObject 子类 | Hacking with iOS: SwiftUI Edition | SwiftUI Core Data:使用约束确保对象是唯一的 |
---|
赏我一个赞吧~~~
网友评论