【问题标题】:Completion handler in function函数中的完成处理程序
【发布时间】:2021-10-19 18:39:26
【问题描述】:

我有一个看起来像这样的函数,我尝试在下面的代码中添加completionHandler

func getValueFromAPI(completionHandler: (_ result: Bool) -> Void){
    
    apii.getVehicle(id!).done {
        (vehicle: Vehicle) -> Void in
        
        print("ggg.state: \(vehicle.state!)")
        print("ggg.state: \(vehicle.displayName!)")
        
        apii.getAllData(vehicle).done { (extendedVehicle: VehicleExtended) in
            
            let entryBattery = (extendedVehicle.chargeState?.batteryLevel)!
            let entryCarState = (extendedVehicle.state)!
            
            print("entryBattery: \(entryBattery)")
            print("entryCarState: \(entryCarState)")
            
            completionHandler(true)
            
        }.catch { (error) in
            print("ERROOOOR: \(error)")
        }
    }.catch { error in
        print("errorr: \(error)")
    }
}

我已经尝试添加一个完整的处理程序,但我在这些行中收到以下错误:

:apii.getVehicle(id!).done {

错误:转义闭包捕获非转义参数“completionHandler”

: apii.getAllData(vehicle).done { (extendedVehicle: VehicleExtended) in

错误:转义闭包捕获非转义参数“completionHandler”

我在这里做错了什么,我该如何解决这个问题?

我正在使用 Swift 5。

【问题讨论】:

    标签: ios swift completionhandler


    【解决方案1】:

    您需要将 completionHandler 声明为转义闭包。例如:

    func getValueFromAPI(completionHandler: @escaping (Bool) -> Void) {
       ...
    }
    

    注意@escaping 限定符。

    【讨论】:

      猜你喜欢
      • 2019-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 2016-03-22
      • 1970-01-01
      相关资源
      最近更新 更多