0

Пожалуйста, помогите, как использовать блок с 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.

Вопросы у меня есть:

  1. Это нормально пройти NSManagedObjectContext к каждому блоку? Поскольку блок выполняется в разных потоках, а NSManagedObjectContext не является потокобезопасным, представляется неправильным сделать это.
  2. Любые предложения, как обращаться с этим? если 1 не работает. Любые известные примеры?

    Большое спасибо за помощь.


Update:

Ok. Учитывая ответ Габриэле, Марио и ссылки What is NSManagedObjectContext's performBlock: used for?, я считаю, вот что я буду делать:

  1. контекст создания экземпляра с помощью NSPrivateQueueConcurrencyType или NSMainQueueConcurrencyType;
  2. в каждом блоке, контекст вызова executeBlock.

Спасибо за помощь.

ответ

0

Чтобы просто ответить на ваш вопрос, вы можете передать контекст вашему блоку загрузки и в этом использовать контекст -performBlock: метод для доступа к контексту.

Смежные вопросы