gpt4 book ai didi

swift - 如何在 Swift 中使用完成处理程序链接函数?

转载 作者:行者123 更新时间:2023-11-28 12:00:22 25 4
gpt4 key购买 nike

我正在将一些函数链接在一起,但我不知道如何在所有函数运行完毕后调用具有返回值的完成处理程序。

func getAirQuality(completion: (aqi: Int?) -> Void) {
callAPI()
}

private func callAPI() {
// ... get data
self.parseDataForAQI(data: data)
}

private func parseDataForAQI(data: Data) {
let aqi = aqi
// Send aqi up to completion handler in getAirQuality
}

所以当一切都说完了之后我可以做这样的事情:

getAirQuality(completion: { aqi -> Void in {
// Do something with aqi
})

最佳答案

我的第一个假设是您的前 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)
}
}
}

这是一个在 playground 中编写的调用程序示例。

let aqp = AirQualityProvider()
aqp.getAirQuality { (value) in
if let value = value {
print("Value = \(value)")
}
}

关于swift - 如何在 Swift 中使用完成处理程序链接函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50219571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com