Swift DispatchGroup.notify не вызывается на игровой площадке

96
13

После того, как вы столкнулись с вызовом API и загрузкой некоторых данных на экране, я заметил, что мне нужно что-то, чтобы вызвать мои функции синхронно. Я узнал о DispatchGroup и решил поиграть с ним, но это не работает для меня.

Возьмем, к примеру, этот небольшой фрагмент кода:

let myGroup = DispatchGroup()

for i in 0 ..< 5 {
myGroup.enter()

print("Finished request \(i)")
myGroup.leave()
}

myGroup.notify(queue: .main) {
print("Finished all requests.")
}

Если я запустил этот код на Swift Playground, сообщения 5 "Finished request i" будут напечатаны, но "Готовые все запросы" не будут. Этот код основан на примере, поэтому я действительно не знаю, почему он не работает. Спасибо!

спросил(а) 2017-12-21T11:54:00+03:00 2 года, 6 месяцев назад
1
Решение
55

На игровой площадке вам нужно указать, что она работает "навсегда", чтобы ждать асинхронных уведомлений и т. Д.:

import PlaygroundSupport
... // your code
PlaygroundPage.current.needsIndefiniteExecution = true

ответил(а) 2017-12-21T11:58:00+03:00 2 года, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема