2016-09-28 80 views
1

我注意到,當保存NSManagedObjectContexts時,RestKit將save呼叫打包在每個NSManagedObjectContext上,呼叫爲performBlockAndWait爲什麼RestKit通過performBlockAndWait保存所有NSManagedObjectContexts?

https://github.com/RestKit/RestKit/blob/development/Code/CoreData/NSManagedObjectContext%2BRKAdditions.m#L64

這是我管理的家長和孩子NSManagedObjectContexts的認識到,只有與MainQueueConcurrencyType類型NSManagedObjectContext應保存這種方式(這通常是PrivateQueueConcurrencyType型這是另一個NSManagedObjectContext孩子方面究竟是與persistentStoreCoordinator相關)。我認爲這個想法是,保存到持久存儲區(即磁盤)是一個較長的操作,不會,也不應該等待。我哪裏錯了?

回答

0

您對ManagedObjectContext所做的一切都必須在該上下文的調度隊列中完成。確保發生的最簡單方法是在由performBlock或performBlockAndWait調用的塊中執行此操作。如果方法的後面有代碼取決於塊的結果,performBlockAndWait是要走的路。如果您必須將這些塊添加到較舊的Core Data代碼(如RestKit的情況下),那麼將NSManagedObjectContext調用包裝在performBlockAndWait中是讓您的Core Data代碼更安全的一種非常痛苦的方式。

相關問題