Мое первое предположение состоит в том, что ваши первые 3 функции являются частью класса. Если это так, один из подходов заключается в том, чтобы сохранить обработчик завершения в качестве переменной экземпляра.
class AirQualityProvider {
var aBlock: ((Int?) -> Void)?
func getAirQuality(completion: @escaping (Int?) -> Void) {
aBlock = completion
callAPI()
}
private func callAPI() {
let data = Data()
parseDataForAQI(data: data)
}
private func parseDataForAQI(data: Data) {
let aqi = 1
if let completion = aBlock {
completion(aqi)
}
}
}
Вот пример звонящего на игровой площадке.
let aqp = AirQualityProvider()
aqp.getAirQuality { (value) in
if let value = value {
print("Value = \(value)")
}
}