在后台线程上初始化 NSManagedObjectContext 和 NSPersistentStoreCoordinator

Posted

技术标签:

【中文标题】在后台线程上初始化 NSManagedObjectContext 和 NSPersistentStoreCoordinator【英文标题】:Init NSManagedObjectContext and NSPersistentStoreCoordinator on background thread 【发布时间】:2018-12-27 11:54:18 【问题描述】:

由于我遇到的崩溃,我正在尝试找到官方答案,这与此类似: nil is not a legal NSPersistentStoreCoordinator for searching for entity name 'GroupMessageInfo'

我找不到对此的官方答案/文档: 我可以 吗?还是必须在主线程上?

很想得到一些参考。 谢谢!

【问题讨论】:

【参考方案1】:

如果您将NSManagedObjectContextConcurrencyType 用作NSManagedObjectContextConcurrencyType.mainQueueConcurrencyType,则应仅在MainThread 中初始化NSManagedObjectContext

否则你应该使用NSManagedObjectContextConcurrencyType.privateQueueConcurrencyType在另一个线程中初始化NSManagedObjectContext

更多信息请参考article。

【讨论】:

以上是关于在后台线程上初始化 NSManagedObjectContext 和 NSPersistentStoreCoordinator的主要内容,如果未能解决你的问题,请参考以下文章

NSManagedObject:在单独的线程上创建

Core Data,在后台线程中修改 NSManagedObject

将对 NSManagedObject 的属性的引用传递给后台线程

将 NSManagedObject(在主上下文中创建)从后台线程传递到主线程是不是安全?

核心数据-后台线程中的更新实体会自动更改主线程中的 NSManagedObject 而无需合并-为啥?

CoreData 是不是可以在另一个上下文/后台任务中从一个上下文/线程安全地使用 NSManagedObject