dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
for (NSDictionary* info in houses) {
House* house = [DataManager processJSON:info]; //this method processes JSON into Core Data objects and saves them
[self.data addObject:house];
}
dispatch_async(dispatch_get_main_queue(), ^{
//update the UI based on the new House objects added to the data array
});
});
我家對象有時工作,但經常的和不可預知最終是這樣的:核心數據實體使用GCD
<House: 0x17f8b420> (entity: House; id: 0x17f71e90 <x-coredata://2826DE3A-1762-4958-8402-541D2B1754FA/House/p219> ; data: <fault>)
我相信這事做與處理上的核心數據對象後臺線程,導致某種上下文衝突。但是我找不到使用GCD核心數據的很多具體例子。我可以在這裏添加什麼建議以確保對象不是故障?
您的主線程上下文是後臺線程的父上下文嗎?如果是這樣,您需要保存後臺線程上下文,以便將更改傳播到父主要上下文。 –
這個問題僅限於打印對象嗎?如果您的代碼嘗試訪問某個屬性值,它們是否可用? –