Я пытаюсь сделать следующий подход,
let operationQueue = OperationQueue()
operationQueue.maxConcurrentOperationCount = 10
func registerUser(completionHandler: @escaping (Result<Data, Error>) -> Void) -> String {
self.registerClient() { (result) in
switch result {
case .success(let data):
self.downloadUserProfile(data.profiles)
case .failure(let error):
return self.handleError(error)
}
}
}
func downloadUserProfile(urls: [String]) {
for url in urls {
queue.addOperation {
self.client.downloadTask(with: url)
}
}
}
Я проверяю, есть ли там, в любом случае, я могу получать уведомления, когда все операции завершаются, и затем я могу вызвать обработчик успеха там.
Я попытался проверить документацию для разработчиков Apple, в которой предлагается использовать
queue.addBarrierBlock {
<#code#>
}
, но это доступно только с iOS 13.0