Мне нужно выполнить асинхронную операцию для каждого элемента в массиве, по одному за раз. Эта операция вызывает обратный вызов в основной очереди.
func fetchResults(for: array, completion: () -> Void) {
var results: [OtherObject]: []
let queue = DispatchQueue(label: "Serial Queue")
queue.sync {
let group = DispatchGroup()
for object in array {
group.enter()
WebService().fetch(for: object) { result in
// Calls back on main queue
// Handle result
results.append(something)
group.leave()
}
group.wait()
}
}
print(results) // Never reached
completion()
}
Вызов WebService не перезванивает, что, я думаю, говорит мне, что основная очередь заблокирована, но я не могу понять, почему.