Wie man einen Wert von Alamofire zurückgibt
Mache ich url-Aufrufe, die durch eine API, die ich erstellt mit swift wie folgt:
class API {
let apiEndPoint = "endpoint"
let apiUrl:String!
let consumerKey:String!
let consumerSecret:String!
var returnData = [:]
init(){
self.apiUrl = "https://myurl.com/"
self.consumerKey = "my consumer key"
self.consumerSecret = "my consumer secret"
}
func getOrders() -> NSDictionary{
return makeCall("orders")
}
func makeCall(section:String) -> NSDictionary{
let params = ["consumer_key":"key", "consumer_secret":"secret"]
Alamofire.request(.GET, "\(self.apiUrl)/\(self.apiEndPoint + section)", parameters: params)
.authenticate(user: self.consumerKey, password: self.consumerSecret)
.responseJSON { (request, response, data, error) -> Void in
println("error \(request)")
self.returnData = data! as NSDictionary
}
return self.returnData
}
}
Nenne ich diese API in mein UITableViewController
zum Auffüllen der Tabelle mit SwiftyJSON Bibliothek. Aber mein returnData
von der API, das ist immer leer. Es gibt kein problem mit Alomofire Anrufe, wie kann ich erfolgreich abrufen Wert. Mein problem ist, wie soll ich tragen diese data
über meinen Tisch view controller?
var api = API()
api.getOrders()
println(api.returnData) // returnData is empty
Kommentar zu dem Problem
In keinem Zusammenhang zu deiner ursprünglichen Frage, ich bin überhaupt nicht zuversichtlich, wie bist du mit dem consumer-key und das secret (bist du mit dem Alamofire
authenticate
- Prozess, aber dabei etwas merkwürdiges mit den Parametern). Es ist wohl eine oder die andere. Es ist eine Funktion Ihres web-service-API, so können wir nicht beantworten, hier, aber dies ist sicherlich nicht korrekt. Es ist, wie die service-API, die ich verwenden soll. Dokumentation schlägt vor, die übergabe der Schlüssel und das Geheimnis, wie Benutzername und Kennwort für die basic-Authentifizierung.
OK, wenn es wirklich die Standardauthentifizierung verwendet, dann verwenden Sie die
authenticate
Funktion, aber was ist dann der Zweck der params
Wörterbuch? Hey, was auch immer funktioniert, aber es scheint neugierig zu machen, sowohl authenticate
übergeben und auth-details wieder, die als Parameter an die Abfrage... InformationsquelleAutor der Frage u54r | 2014-12-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als mattt Punkte aus, Alamofire ist die Rückgabe von Daten asynchron über eine
completionHandler
Muster, so müssen Sie das gleiche tun. Sie können nicht nurreturn
den Wert sofort, sondern Sie stattdessen verwenden möchtenVoid
zurück geben und stattdessen einen Abschluss-handler-Schließung Muster.In Swift 3 und Alamofire 4, das Aussehen könnte:
Dann, wenn Sie es aufrufen möchten, verwenden Sie diese
completionHandler
parameter (in nachfolgende Schließung, wenn Sie wollen):InformationsquelleAutor der Antwort Rob
Aus der Alamofire README (Hervorhebung Hinzugefügt):
InformationsquelleAutor der Antwort mattt
Folgenden ist der vollständige Fluss für die Durchführung der 'Login Action' mit Alamofire und Swift.
Alamofire v3.3
Swift-2.2
Xcode 7.3
Habe ich verwendet GCD und MBProgressHUD für meine eigene Bequemlichkeit. Umgestalten und nutzen, wie Sie möchten 🙂
InformationsquelleAutor der Antwort n.by.n
Parsen einer json mit Swifty JSON, hier ist, wie ich bin, es zu tun.
Für @Jenita _Alice4Real
InformationsquelleAutor der Antwort kishorer747
Details
xCode 9.1, Swift 4
Features:
Probe 1
Zurückgeben von Daten mithilfe von Schließung
Vollständige Probe 1
Probe 2
Zurückgeben von Daten mithilfe von Delegaten
Vollständige Probe 2
Probe 3
Zurückgeben von Daten mithilfe von PromiseKit
Vollständige Probe 3
InformationsquelleAutor der Antwort Vasily Bodnarchuk