2016-07-31 18 views
0

Ich habe versucht, eine Funktion zum Parsen eines JSON zu schreiben. Der Rückgabewert der Funktion ist ein array von Wörterbüchern. Leider habe ich das Problem, dass die Zuweisung result = data as! [[String:AnyObject]] nicht funktioniert. die print(data) gibt mein JSON wunderbar zurück, aber die print(result) gibt mir nur ein leeres Array zurück. überraschend ist es, dass die Methode print(result) zuerst ausgeführt wird und dann die Methode print(data) ausgeführt wird.Swift Funktion zum Parsen von JSON und zum Zurückgeben eines Arrays von Wörterbüchern

Der Code ich habe Versuch:

import Foundation 
import Alamofire 
import SwiftyJSON 

func getPlayers() -> Array<Dictionary<String, AnyObject>> { 

    var result = [[String:AnyObject]]() 

    Alamofire.request(.GET, "http://example.com/api/v1/players", parameters: ["published": "false"]) 
     .responseJSON { (responseData) -> Void in 
      if((responseData.result.value) != nil) { 
       let response = JSON(responseData.result.value!) 

       if let data = response["data"].arrayObject { 
        print(data) 
        result = data as! [[String:AnyObject]] 
       } 
      } 
    } 

    print(result) 

    return result 
} 

Antwort

3

Api Aufruf Arbeit in async (im Hintergrund) Art und Weise, die ist, warum Sie swift closure statt Rückkehr dictionary verwenden müssen. Ändern Sie den Code wie dieser

func getPlayers(completion: (Array<Dictionary<String, AnyObject>>) ->())) { 

    var result = [[String:AnyObject]]() 

    Alamofire.request(.GET, "http://example.com/api/v1/players", parameters: ["published": "false"]) 
     .responseJSON { (responseData) -> Void in 
      if((responseData.result.value) != nil) { 
       let response = JSON(responseData.result.value!) 
       if let data = response["data"].arrayObject { 
        print(data) 
        result = data as! [[String:AnyObject]] 
       } 
      } 
      completion(result) 
    } 
} 

Und nennen wie diese

self.getPlayers() { (result) ->() in 
    print(result) 
} 
+1

Glücklich Coding :) –