我注意到,在保存NSManagedObjectContexts
时,RestKit会使用save
对每个NSManagedObjectContext
进行performBlockAndWait
个调用。
我对管理父母和子女NSManagedObjectContexts
的理解是,只有NSManagedObjectContext
类型MainQueueConcurrencyType
应该以这种方式保存(这通常是另一个{{1}的子上下文类型为NSManagedObjectContext
的{{1}}实际上与PrivateQueueConcurrencyType
相关联的。我认为这个想法是保存到持久性存储(即磁盘)是一个更长的操作,不会,也不应该等待。我哪里错了?
答案 0 :(得分:0)
您使用ManagedObjectContext执行的所有操作都必须在该上下文的调度队列中完成。确保发生这种情况的最简单方法是在performBlock或performBlockAndWait调用的块中执行此操作。如果方法稍后有代码取决于块的结果,则performBlockAndWait是要走的路。如果你必须将这些块添加到较旧的Core Data代码中,就像在RestKit中一样,在performBlockAndWait中包装NSManagedObjectContext调用是一种让你的Core数据代码(更多)线程安全的一种非常痛苦的方法。