2016-07-31 2 views
0

JSON을 구문 분석하는 함수를 작성하려고했습니다. 함수의 반환 값은 사전의 array입니다. 아쉽게도 result = data as! [[String:AnyObject]] 지정이 작동하지 않는 문제가 있습니다. print(data)은 내 JSON을 훌륭하게 반환하지만 print(result)은 나에게 빈 배열 만 제공합니다. 놀랍게도 방법 print(result) 이 먼저 실행 된 다음 방법 print(data)이 실행됩니다. (배경) async에서JSON을 구문 분석하고 사전 배열을 반환하는 Swift 함수

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 
} 

답변

3

API 광고 호출 작업이 closure 대신 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) 
} 
+1

행복 : 코딩처럼 전화 –