Загрузка нескольких изображений из расширения Share

В настоящее время у меня установлено расширение общего доступа, которое загрузит изображение, выбранное из приложения «Фото», на сервер. Это работает отлично, используя приведенный ниже код.

int fileNum=10; NSItemProvider *attachment = inputItem.attachments[0]; if ([attachment hasItemConformingToTypeIdentifier:(NSString*)kUTTypeImage]) { [attachment loadItemForTypeIdentifier:(NSString*)kUTTypeImage options:nil completionHandler:^(id item,NSError *error) { if (item) { NSLog (@"image %@",item); //upload image here NSData *data=[NSData dataWithContentsOfURL:item]; activityRecord.activityType=@"Images"; AppRecord *appRecord=[[AppRecord alloc] init]; appRecord.fileName=[NSString stringWithFormat:@"activity_%@%i(%i).jpg",activityRecord.supplierID,activityRecord.activityID,fileNum]; appRecord.fileBytes=data; [fileRecords addObject:appRecord]; activityRecord.activityFiles=fileRecords; [[Settings getInstance] uploadActivityRecord:activityRecord withDelegate:self]; [self.extensionContext completeRequestReturningItems:@[] completionHandler:nil]; } }]; } 

У меня была предыдущая проблема, когда метод loadItemForTypeIdentifier не вызывался, и он был разрешен путем вызова completeRequestReturningItems в блоке завершения. Проблема, которую я сейчас имею в том, что, если я хочу загрузить несколько файлов, мне нужно вызвать loadItemForTypeIdentifier в цикле for (для каждого изображения), но как я могу это сделать, если метод completeRequestReturningItems будет вызываться после первого изображения / элемента?

Много спасибо Пол

One Solution collect form web for “Загрузка нескольких изображений из расширения Share”

Недавно я столкнулся с той же проблемой и смог ее решить, добавив счетчик и подсчитав, когда изображения успешно завершили свой блок. В loadItemForTypeIdentifier завершения loadItemForTypeIdentifier я затем проверяю, были ли вызваны все элементы перед вызовом completeRequestReturningItems в блоке dispatch_once (только ради безопасности).

 __block NSInteger imageCount; static dispatch_once_t oncePredicate; NSItemProvider *attachment = inputItem.attachments[0]; if ([attachment hasItemConformingToTypeIdentifier:(NSString*)kUTTypeImage]) { [attachment loadItemForTypeIdentifier:(NSString*)kUTTypeImage options:nil completionHandler:^(NSData *item ,NSError *error) { if (item) { // do whatever you need to imageCount --; if(imageCount == 0){ dispatch_once(&oncePredicate, ^{ [self.extensionContext completeRequestReturningItems:@[] completionHandler:nil]; }); } } }]; } 

Я не могу сказать, что я чувствую, что это слишком элегантное решение, поэтому, если кто-то знает более подходящий способ справиться с этим распространенным случаем использования, я бы хотел услышать об этом.

  • Основная строка кода iOS для пояснения кода
  • SDK Playhaven не работает
  • Как устранить нарушения в Google Login / Registration на WKWebView?
  • Что такое профиль Bluetooth iBeacon
  • Управление памятью в приложении iOS на основе карты
  • Войти без учетной записи facebook с FBSDKLoginBehaviorWeb появится пустая страница
  • Вопросы по Parse + Facebook
  • Общение с Bluetooth Classic в iOS, когда приложение находится в фоновом режиме?
  • Показать приложение в меню «Открыть» ... в случае прикрепления файлов из приложений Microsoft
  • как получить доступ к контроллеру вида табуляции с контроллера представления в нем?
  • Как найти, пересекаются ли два маршрута карты Google в проекте IOS
  • Interesting Posts

    Быстрое изменение информации exif в изображениях, снятых с мобильной камеры

    Поддержка Emojis в XML

    Swift: настройка уровня громкости AVAudioSession

    Позвонить reloadData на нескольких UICollectionView в одно и то же время

    SpriteKit Пауза и возобновление SKView

    share Расширение IOS 8: Как удалить часть собственной активности в категории акций?

    Делегировать текст из TextField между представлениями контейнера

    Загрузите много файлов (фото, видео) в фоновом режиме с приоритетным порядком

    Как установить прозрачность / альфа UIImage?

    изменить изображение аннотации после его создания

    UIModalPresentationCurrentContext и willRotateToInterfaceOrientation

    Как я могу рисовать изображение с помощью Text Wrapping на iOS?

    Тестирование производительности в Swift с использованием TDD

    Как получить простой символ «глобус» Unicode

    Отобразить просматриваемый вид из AppDelegate на основе поискового запроса Core Spotlight

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.