0

請幫忙關於如何使用NSManagedObjectContext塊。我試圖爲一個實體異步下載幾個圖像。我擁有的數據結構或多或少如下所示(這是僞代碼的更多內容,並不完全遵循NSManagedObject語法)。使用NSManagedObjectContext的塊

@interface SAImageDoc : NSObject 

@property(nonatomic, strong) NSString* imageUrl1; 
@property(readwrite) BOOL imageUrl1Downloaded; 
@property(nonatomic, strong) NSString* imageUrl2; 
@property(readwrite) BOOL imageUrl2Downloaded; 

@end 

我想異步下載圖像使用塊(AFNetworking)。下載圖像後,我想將下載的布爾值更新爲YES並將其保存到CoreData。

我的問題是:

  1. 是否確定的NSManagedObjectContext傳遞給每塊?由於該塊在不同的線程中執行,並且NSManagedObjectContext不是線程安全的,因此這似乎是錯誤的。
  2. 任何建議如何處理這一個?如果1不工作。任何已知的例子?

    非常感謝您的幫助。


更新:

確定。鑑於加布裏埃萊,馬里奧的回答和引用What is NSManagedObjectContext's performBlock: used for?,我相信這裏是我該怎麼辦:使用NSPrivateQueueConcurrencyType或NSMainQueueConcurrencyType

  1. 實例化上下文;
  2. 在每個塊中,調用上下文performBlock。

感謝您的幫助。

回答

0

要簡單地回答您的問題,您可以將上下文傳遞到您的下載塊,並使用上下文的-performBlock:方法訪問上下文。

相關問題