Hey ich bin neu hier und ich versuche, Wert von Anfrage außerhalb der Anfrage-Funktion in VC zu erhalten, aber ich kann nicht, dass ich Fehler bekomme ich versuchte verschiedene Wege, aber ich werde immer anders Fehler, jetzt bekomme ich Typ Any hat keine Subscript-Mitglieder, können Sie mir helfen, String von Anfrage zu bekommen und ein Array zu finden und einen Wert daraus zu nehmen.Alamofire und SwiftyJSon erhalten Wert außerhalb Anfrage Funktion
Ich brauche Wert in VC von Json strin zu erhalten, also versuche ich, auf diese Weise:
let retur = Json()
retur.login(userName: userName.text!, password: password.text!) { (JSON) in
print(JSON)
let json = JSON
let name = json["ubus_rpc_session"].stringValue
print(name)
Antwort: { "JSON-RPC": "2.0", "id": 1, "Ergebnis": [0, {"ubus_rpc_session": "70ea230f29057f54459814459b5a316e", "Zeitüberschreitung": 300, "läuft ab": 300, "acls": {"access-group": {"superuser": ["read", "" schreiben "]," nicht authentifiziert ": [" lesen "]}," ubus ": {" ": [" "]," sitzung ": [" access "," login "]}," uci ": { "*": ["lesen", "schreiben"]}}, "Daten": {"Benutzername": "root"}}]}
Meine Anfrage:
private func makeWebServiceCall (urlAddress: String, requestMethod: HTTPMethod, params:[String:Any], completion: @escaping (_ JSON : Any) ->()) {
Alamofire.request(urlAddress, method: requestMethod, parameters: params, encoding: JSONEncoding.default).responseString { response in
switch response.result {
case .success:
if let jsonData = response.result.value {
completion(jsonData)
}
case .failure(_):
if let data = response.data {
let json = String(data: data, encoding: String.Encoding.utf8)
completion("Failure Response: \(json)")
}
Funktion, die Anfrage-Methode aufrufen:
public func login(userName: String, password: String, loginCompletion: @escaping (Any) ->()) {
let loginrequest = JsonRequests.loginRequest(userName: userName, password: password)
makeWebServiceCall(urlAddress: URL, requestMethod: .post, params: loginrequest, completion: { (JSON : Any) in
loginCompletion(JSON)
})
Aktualisiert: mit Any
und nach Umwandlung SUBSCRIPT
Sie nicht Wert tun [ „key“] auf Alle, Ihr Abschluss Block benötigen JSON [String: Alles] zurückzukehren, oder wandeln Sie Ihre Jeder Block alles, was Sie im Inneren Funktion benötigen –
Ich habe versucht, hier Werttyp zu ändern: Vervollständigung: {(JSON: [String: Beliebige]) in loginCompletion (JSON), aber immer noch in dieser Zeile: let name = json ["usus_rpc_session"]. stringValue, ich bekomme den gleichen Fehler. –
Wenn Sie [String: Any] verwenden, ist es unmöglich, immer noch Fehler über "Any" zu haben. Überprüfen Sie es erneut –