Знайте, когда итерация над массивом методом асинхронным закончена

голоса
2

Допустим, у меня есть массив строк, и я вызвать метод асинхронной, который возвращает Int из него. Я хочу знать, когда у меня есть этот ИНТ значения в моем массиве целых чисел.

let rndStrings = [a, b, c]
var rndInts = [Int]()
rndStrings.forEach { rndString in 
   someAsyncMethod { intResult in
     rndInts.append(intResult)
   }
}

Я хочу, чтобы ждать, пока rndInts имеет все 3 значения

Задан 20/10/2018 в 05:14
источник пользователем
На других языках...                            


1 ответов

голоса
3

Не ждите . Получить уведомление с DispatchGroup.

let rndStrings = ["a", "b", "c"]
let group = DispatchGroup()
var rndInts = [Int]()
rndStrings.forEach { rndString in 
   group.enter()
   someAsyncMethod { intResult in
     rndInts.append(intResult)
     group.leave()
   }
}
group.notify(queue: DispatchQueue.main) {
   print("finished")
}
Ответил 20/10/2018 в 05:18
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more