Ich benutze eine gemeinsame Klasse, um Web-Service-Antwort zu erhalten. Jetzt möchte ich den Rückgabewert vom Web-Service in meinem ersten View-Controller zuweisen. Das Problem ist jedoch der Zuweisungscode im View-Controller, der ausgeführt wird, bevor die Web-Service-Antwort in der schnellen gemeinsamen Klasse abgeschlossen wird. Daher wird das Array als leeres Array zurückgegeben. Kann jemand bitte eine Idee geben zu warten, bis der Service-Aufruf in Swift abgeschlossen ist.Warte Ausführung einer Funktion, bis eine andere
Hier ist mein Beispielcode. Common.swift Klasse
static func getData() -> [returnArray] {
DispatchQueue.main.async(execute: {
// Request to get service data
// Servce response
let task = restObject.callObject.dataTask(with: requestObject, completionHandler: {data, response, error -> Void in
let object = getData(data)
if let values = object {
if values.count > 0 {
// Assign the values to global static array
}
}
})
task.resume()
})
// return the global static array
}
-View-Controller-Klasse: Innen didLoad Funktion Ich bin die gemeinsame Klasse über Funktion aufrufen und Zugriff auf die zurückgegebenen Array-Werte. Aber es gibt ein leeres Array zurück.
Sie wollen nicht * Warten *, müssen Sie Ihre Klasse über eine Art „Rückruf“ oder „Abschluss-Handler“ registrieren. – luk2302
Schauen Sie in PromiseKit: https://github.com/mxcl/PromiseKit –
Bitte zeigen Sie den entsprechenden Code. – shallowThought