【发布时间】:2011-07-07 17:09:54
【问题描述】:
我了解 Core Data 不是线程安全的,并且与上下文关联的 NSManagedObjectContext 和 NSManagedObjects 不能在线程之间传递。
问题:
但是,如果我的主线程上有一个 NSManagedObjectContext,我可以在后台线程上创建一个 NSManagedObject 对象吗(不将它附加到任何上下文——也就是说,只需在 NSManagedObject 上调用 alloc/init),然后传递那个 NSManagedObject返回主线程并从那里将其添加到上下文中?我查看了有关 Core Data concurrency 的文档,但找不到任何说明这种使用模式可以的内容。
上下文:
我有一个执行复杂任务然后发布结果的后台线程。结果是一个包含几个属性的 NSManagedObject 子类:时间、文件路径和成功或错误消息(作为字符串)。我想在后台线程上创建结果对象,然后将其扔回主线程并将其添加到将在 tableView 中显示的 Core Data 上下文中。
如果我不能在后台线程上创建 managedObject,那么我需要创建一个字典,将字典传递给主线程,读取键,从这些值创建 managedObject,等等。看起来更干净如果可能,在后台线程上创建 managedObject。
【问题讨论】:
标签: objective-c cocoa core-data nsmanagedobject nsmanagedobjectcontext