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:方法访问上下文。

相关问题