我一直在使用Core Data和多線程有一段時間的麻煩,我不得不說它讓我瘋狂。在閱讀了一些博客和Apple Docs後,我看到推薦的方法是爲每個線程創建一個NSManagedObjectContext
(moc),並共享NSPersistentStoreCoordinator
。但是,因爲我使用NSOperations,並且它們沒有附加到特定的線程,所以我必須爲每個操作創建一個新的moc。從核心數據和多線程中獲取數據時的效率
因此,每次創建moc時,我都將商店協調員設置爲模擬,並使用它獲取一些數據。然後,如果我需要使用我在另一個線程中獲取的對象,例如在前景中,我應該再次獲取它們,創建一個新的moc,並使用existingObjectWithID:error:
。
但據我所知,沒有方法接收對象ID數組,因此我必須爲每個對象使用該調用(existingObjectWithID:error:
),這意味着它可能會循環一段時間,比方說100時間例如。
我的問題是:這是正確的方法嗎?我錯過了什麼嗎?它是否比直接從主線程獲取數據更快?
我發現的最多信息是關於修改不同線程中的數據,但我幾乎找不到關於抓取的信息。
在此先感謝:)
您定位的是哪個版本的iOS? – 2012-02-09 10:54:07
iOS 4和iOS 5(不同的項目) – vicpenap 2012-02-09 11:08:32
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/Concurrency.html – 2017-04-21 22:37:03