Пожалуйста, помогите, как использовать блок с NSManagedObjectContext. Я пытаюсь асинхронно загружать несколько изображений для одного объекта. Структура данных, которые у меня есть, более или менее похожа на следующий (это больше кода psuedo, и это не соответствует следующему синтаксису 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.
Вопросы у меня есть:
- Это нормально пройти NSManagedObjectContext к каждому блоку? Поскольку блок выполняется в разных потоках, а NSManagedObjectContext не является потокобезопасным, представляется неправильным сделать это.
Любые предложения, как обращаться с этим? если 1 не работает. Любые известные примеры?
Большое спасибо за помощь.
Update:
Ok. Учитывая ответ Габриэле, Марио и ссылки What is NSManagedObjectContext's performBlock: used for?, я считаю, вот что я буду делать:
- контекст создания экземпляра с помощью NSPrivateQueueConcurrencyType или NSMainQueueConcurrencyType;
- в каждом блоке, контекст вызова executeBlock.
Спасибо за помощь.