Итак, я недавно вернулся в Swift & iOS после перерыва и столкнулся с проблемой асинхронного выполнения. Я использую iOS SDK от Giphy, чтобы сэкономить много работы, но их документация практически отсутствует, поэтому я не уверен, что может происходить под капотом в их функции, которая вызывает их API.
Я вызываю свою функцию, содержащую приведенный ниже код, из конструктора объекта stati c (я не думаю, что это проблема, поскольку я также пытался вызвать его из метода cellForItemAt для представления Collection).
Моя проблема в том, что моя функция возвращается и выполнение продолжается до завершения вызова API. Я попытался использовать DispatchQueue.main.asyn c и полностью удалить Dispatch и DispatchGroups, но безрезультатно. Единственное, что сработало, это семафор, но я помню, что читал, что это не лучшая практика?
Какие-нибудь советы были бы хороши, я слишком долго застрял в этом. Большое спасибо заранее
GiphyCore.shared.gifByID(id) { (response, error) in
if let media = response?.data {
DispatchQueue.main.sync {
print(media)
ret = media
}
}
}
return ret