Предположим, что я использую другой SDK (который я не контролирую) с API, который импортирует 1 файл асинхронно и вызывает завершение обратного вызова завершения при завершении. Ниже приведен пример API.Отказоустойчивый набор асинхронных операций с отчетностью о проделанной работе в iOS
func importFile(filePath: String, completion:() -> Void)
Мне нужно импортировать 10 файлов (по одному), используя этот API, но мне нужно, чтобы это было сократимыми, например после того, как файлы 1,2,3 были успешно импортированы, в то время как файл 4 импортируется, я хочу иметь возможность отменить весь набор операций (импорт из 10 файлов), так что файл 4 будет завершен (поскольку он уже запущен), но Файлы 5-10 больше не будут импортированы.
Кроме того, мне также необходимо сообщить о ходе импорта. Когда файл 1 был успешно импортирован, я должен сообщить о ходе выполнения 10% (1 из 10 завершено).
Как я могу это достичь?
Я рассматриваю использование NSOperationQueue с использованием 10 NSOperations, но кажется, что отчет о проделанной работе будет затруднен.
Пожалуйста, проверьте мой ответ и дайте мне знать, если это то, что вы ищете. – KrishnaCA
На самом деле, я думаю, мы также можем использовать 'dispatch_suspend', чтобы решить эту проблему. Вы ищете решение, основанное только на NSOperation? – KrishnaCA
Я отредактировал свой ответ таким образом, чтобы он отвечал на все ваши запросы. Я смиренно прошу вас взглянуть на него. – KrishnaCA