Я реализую код, который загружает изображения и сохраняет их в базе данных приложения,AFImageRequestOperation чтобы не асинхронный
У меня есть массив объектов, каждый объект содержит URL изображений и некоторую другую информацию. Чтобы загрузить изображения, я использую библиотеку классов AFImageRequestOperation.h AFNetworking.
Мой код загружает и сохраняет данные в базе данных, но должен уведомить пользователя, какое изображение загружено, например: если у меня есть массив, содержащий 5 объектов (приведенных чуть выше каждого объекта), придется выполнять загрузку тот же порядок, что и в массиве, но поскольку AFImageRequestOperation делает загрузку асинхронно, элемент 4 может быть загружен до первого элемента.
Короче говоря, я хочу иметь контроль и только выпуск для следующей загрузки, когда предыдущий закончен.
У меня есть для этого проходит через массив объектов и вызывает функцию для каждой позиции, функция имеет следующий код:
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:[arrImagem valueForKey:@"urlimagem"]]];
AFImageRequestOperation *operation = [AFImageRequestOperation imageRequestOperationWithRequest:request imageProcessingBlock:nil success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image){
Imagens *imagem = (Imagens *)[NSEntityDescription insertNewObjectForEntityForName:@"IMAGENS" inManagedObjectContext:managedObjectContext];
// Save Image
NSData *imageData = UIImageJPEGRepresentation(image, 90);
[imagem setCategoria:cat];
[imagem setTitulo:[arrImagem valueForKey:@"titulo"]];
[imagem setDescricao:[arrImagem valueForKey:@"descricao"]];
[imagem setImagem:imageData];
NSError *error;
if(![managedObjectContext save:&error]){
NSLog(@"houve um erro muito grave");
//return false;
}else{
NSLog(@"Salvou imagem");
}
}failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error){
NSLog(@"%@", [error localizedDescription]);
}];
[operation start];
Я не знаю, если мой вопрос был очень ясен, но в основном мой вопрос похож на этот link
Хорошо, я попытался реализовать ваш код, поместить его внутри блока узнайте переданные параметры, если я положу эти параметры, например (void (^) (UIImage * image, NSString * url ... В рамках функции не может быть доступ к ним. понял, что вы имели в виду? – jucajl
Извините, но я не понимаю, к чему вы не можете получить доступ: D. В каком методе вы не можете получить доступ к параметрам? – danypata