2017-03-13 4 views
0

Ich arbeite an einem kleinen Teil des Swift-Codes, um mit dem Ziehen von Daten über webbasierte APIs zu arbeiten. Im Moment bin ich nah dran, denke aber, dass ich den Completion-Handler-Aspekt vermisse, wenn ich die Daten innerhalb der getUserInfo() -Daten ausgibt, die dort sind, aber außerhalb dieser Funktion erscheinen die initialisierten Standarddaten. Die Funktion wird wie folgt aufgerufen:Hinzufügen eines Beendigungshandlers zu Alamofire

print("Provided Username is: \(workingData.user)") 
getUserInfo() 
print("Returned String Data is: \(workingData.responseDataString)") 

und die eigentliche Funktion:

func getUserInfo() { 
    Alamofire.request(workingjss.jssURL + devAPIMatchPath + workingData.user, method: .get) 
     .authenticate(user: workingjss.jssUsername, password: workingjss.jssPassword).responseString { response in 
      if (response.result.isSuccess) { 
       print("In Function Data: \(response.result.value!)" 
       workingData.responseDataString = response.result.value! 
      } 
    } 
} 

Der Ausgang den Code ausgeführt wird:

Provided Username is: MYUSER 
Returned String Data is: Nothing Here Yet 
In Function Data: {"Cleaned JSON Data here"} 

Würde ein Abschluss-Handler das Problem helfen? Ich bin ziemlich neu in der Arbeit mit Alamofire, es tut mir so leid, wenn es so einfach ist. Vielen Dank!

Antwort

4

Versuchen Sie, einen Abschluss-Handler:

func getUserInfo(completion: @escaping (String) -> Void) { 
    Alamofire.request(workingjss.jssURL + devAPIMatchPath + workingData.user, method: .get) 
     .authenticate(user: workingjss.jssUsername, password: workingjss.jssPassword).responseString { response in 
      if (response.result.isSuccess) { 
       print("In Function Data: \(response.result.value!)" 
       completion(response.result.value!) 
      } 
    } 
} 

Und nennen Sie es mögen:

getUserInfo() { response in 
    // Do your stuff here 
    workingData.responseDataString = response 
    print("Returned String Data is: \(workingData.responseDataString)") 
} 
Verwandte Themen