Gestionnaire de complétion en fonction
JordanieSkyn
J'ai une fonction qui ressemble à ceci, et j'ai essayé d'ajouter un completionHandler
dans le code ci-dessous :
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)")
}
}
J'ai déjà essayé d'ajouter un gestionnaire complet, mais j'obtiens l'erreur suivante sur ces lignes :
Ligne : apii.getVehicle(id!).done {
Erreur : La fermeture d'échappement capture le paramètre sans échappement 'completionHandler'
Ligne : apii.getAllData(vehicle).done { (extendedVehicle: VehicleExtended) dans
Erreur : La fermeture d'échappement capture le paramètre sans échappement 'completionHandler'
Qu'est-ce que je fais mal ici et comment puis-je résoudre ce problème ?
J'utilise Swift 5.
Rob
Vous devez déclarer que vous completionHandler
êtes une fermeture en fuite. Par exemple:
func getValueFromAPI(completionHandler: @escaping (Bool) -> Void) {
...
}
Notez le @escaping
qualificatif.