【发布时间】:2016-12-29 03:16:11
【问题描述】:
我正在尝试遵循此 Apple 示例代码,以在包含此代码的后台保存到核心数据的最佳实践:
NSArray *jsonArray = …; //JSON data to be imported into Core Data
NSManagedObjectContext *moc = …; //Our primary context on the main queue
NSManagedObjectContext *private = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
[private setParentContext:moc];
我的主要 MOC 保存在一个属性中。但是,无论我是分配一个新的 MOC 还是使用属性中的 MOC,我都会收到错误消息:
'Parent NSManagedObjectContext must use either NSPrivateQueueConcurrencyType or NSMainQueueConcurrencyType.'
*** First throw call stack:
据说解决这个问题的方法是为 MOC 指定并发类型,如下所示:
managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
这应该在主核心数据堆栈中完成吗?还是您创建一个新的 MOC?我尝试创建一个新的 MOC 并收到 MOC 为空的错误。创建第二个 MOC 似乎也是多余的,而私有的 MOC 是三个。另一方面,我害怕更改主要核心数据堆栈,因为它可能会在应用程序中抛出其他东西。
解决此问题的最佳方法是什么?
【问题讨论】:
标签: ios core-data concurrency