Функция Swift для разбора JSON и возврата массива словарей

Я пытался написать функцию для анализа JSON. Возвращаемое значение функции являетсяarray словарей. К сожалению, у меня есть проблема, что назначениеresult = data as! [[String:AnyObject]] не работает.print(data) возвращает мой JSON замечательный обратно, ноprint(result) только возвращает мне пустой массив. Удивительно, что методprint(result) запускается сначала, а затем методprint(data) запустить.

Код, который я пробовал:

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
}

Ответы на вопрос(1)

Решение Вопроса

АПИ зовет работу вasync (в фоновом режиме), поэтому вам нужно использовать Swiftclosure вместо возвращенияdictionary, Измените свой код следующим образом

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)
     }
}

И звоните вот так

self.getPlayers() { (result) -> () in
     print(result)
}
 Nirav D31 июл. 2016 г., 13:47
Удачного кодирования :)

Ваш ответ на вопрос