у меня есть небольшая проблема с этим, я загружаю изображения из URL-адрес, как это:AFImageRequestOperation ждать, пока не закончит
+ (void)getImageFromURL:(NSString *)imageFilename urlMode:(NSString *)mode block:(id (^)(UIImage *responseImage))aImage {
NSURL *url = [NSURL URLWithString:[mainURL stringByAppendingString:mode]];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"GET"];
AFImageRequestOperation *requestOperation = [AFImageRequestOperation imageRequestOperationWithRequest:request
imageProcessingBlock:nil
cacheName:nil
success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image)
{
aImage(image);
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error)
{
// manage errors
}];
[[[NSOperationQueue alloc]init] addOperation:requestOperation];
}
Я пытаюсь установить Ивар UIImage * userAvatar в ответ от этого запрос, но проблема в том, что, поскольку у него асинхронный запрос, я не получаю iVar, установленный до моего кода, поэтому мой iVar пуст, когда я обращаюсь к нему и передаю его другому методу.
Хмм, позвольте мне попытаться объяснить, у меня есть LoginView, где я помещаю свои данные для входа, если логин успешно, я передаю ответ от запроса моей модели, чтобы обрабатывать создание пользователя, модель передает пользователь возвращается к LoginView, а LoginView передает пользователю UserView, и LoginView увольняется. И он отклоняется до того, как изображение будет установлено на его значение. И есть моя проблема. – daiikota
Ах. Итак, поскольку вы передаете вновь созданный пользовательский объект между «LoginView» и «UserView», вы не могли бы получить изображение асинхронно как ответственность объекта пользователя? Затем, если вам нужно предпринять некоторые действия в UserView, когда изображение доступно, вы можете использовать KVO для запуска соответствующего ответа при установке изображения аватара пользователя; поэтому, например, 'UserView' будет наблюдать' self.user.userAvatar' – FluffulousChimp
О, я предположил, что ваш пользователь был модельным объектом. – FluffulousChimp