iOS SwiftUI2 CoreData七个核心技巧提升性能

从开始就注重性能,将有助于您为未来的应用做准备。您的数据库一开始可能很小,随着数量的不断增长,错误的使用方式将导致查询缓慢,从而降低用户体验。本文将从七个方面来带领大家来掌握一下CoreData性能提升的技巧。

一、利用后台管理object context对象上下文

很多朋友对后台托管对象上下文不太了解,我们经常使用视图上下文来执行任何Core Data相关的任务,例如插入新内容,删除内容,获取内容等。

最初,我们的应用程序数量容量很少时,仅使用视图上下文并不是问题,也不会导致与Core Data相关的任何可见的性能损失。但是,一旦我们的应用开始增长,我们就会发现到视图上下文与主队列相关联,缓慢的查询阻止了我们的用户界面,并且我们的应用程序响应速度变慢。

通常,最佳实践是在后台队列上执行数据处理,因为它可能占用大量CPU。诸如将JSON导入Core Data中的示例可能会阻塞视图上下文并导致用户界面无响应。

解决方案是利用后台管理对象上下文。最新的API使从持久性容器创建新上下文变得容易:

let backgroundContext = persistentContainer.newBackgroundContext()

我建议在NSManagedObjectContext(concurrenyType :)初始化方法上使用此方法,因为该方法将自动与NSPersistentStoreCoordinator关联,并且还将设置为使用NSManagedObjectContextDidSave广播。这样可以使您的背景上下文与视图上下文保持同步。

您可以将此背景上下文保存在自定义的持久性容器子类上。这样,您可以重用后台上下文,而只需要管理两个上下文。这使您的核心数据结构易于理解,并且避免了多个不同步的上下文。

如果只需要在几个地方使用背景上下文,则还可以决定使用performBackgroundTask(_ :)方法在原地创建背景上下文

persistentContainer.performBackgroundTask { (backgroundContext) in
    // .. Core Data Code
}

但是,此方法每次调用时都会创建一个新的NSManagedObjectContext。如果您要更频繁地分派到后台上下文,则可能要考虑使用共享后台上下文。

二、重要提示:请勿在队列之间传递NSManagedObject实例

还有 82% 的精彩内容
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
支付 ¥1.59 继续阅读