haben die folgende Funktion. Ich bin auf der Suche nach dem Ergebnis der Funktion als ein Int nach der Beendigung der Thread-Ausführung. Es fragt eine Variable von einem externen Gerät ab. Wenn ich die Funktion get-Variable aufruft, erhalte ich sofort das Ergebnis -1, und einige Sekunden danach erhalte ich das Ergebnis vom Abschluss-Thread. Wie kann ich dies neu bearbeiten, so dass kein Ergebnis zurückgegeben wird, bis der tatsächliche Wert zurückgegeben wird? noch ein noob mit swift3 und GCD..thanksSwift - Rückgabevariable von innerhalb der Schließung
func getVariable(variableName: String) -> Int {
var res: Int = -1
print (deviceOK)
if deviceOK {
DispatchQueue.global(qos: .default).async {
// logging in
(self.deviceGroup).wait(timeout: DispatchTime.distantFuture)
(self.deviceGroup).enter()
self.myPhoton!.getVariable(variableName, completion: { (result:Any?, error:Error?) -> Void in
if let _ = error {
print("Failed reading variable " + variableName + " from device")
} else {
if let res = result! as? Int {
print("Variable " + variableName + " value is \(res)")
self.deviceGroup.leave()
}
}
})
}
}
return res
}
Rufen Sie die Funktion auf einem Hintergrundthread auf. –