2017-04-22 89 views
0

這裏是我的問題,我想創建一個函數有這個原型:迅速JSON如何填充對象

func doPostRequest(......)->JSON() 

我寫這樣的:

func downloadData(completed:@escaping()->()){ 
    Alamofire.request(url).responseJSON(completionHandler: { 
     response in 
     let result = response.result 

     if let dict = ... { 

      self._temp = String(format: "%.0f °C", temp - 273.15) 
      ... 
     } 

     completed() 
    }) 
} 

我會喜歡返回任何對象或字典,與我的JSON的東西在...但每次我嘗試實現返回我有一個零對象!也許我如何可以實現此功能的範圍問題有

var myJson:NSDictionary 
myJson=downloadData(......) ??? 

感謝您的幫助

+0

爲什麼不使用SwiftyJSON ? – Sweeper

回答

0

由於體內的方法異步工作,你有例如

的完成處理程序來聲明請求方法
func doPostRequest(completion: @escaping ([String:Any])->()) 

返回時,它傳遞一個Swift字典。

的方法可以用這個代碼中使用:

var myJson = [String:Any]() 

... 

doPostRequest() { json in 
    self.myJson = json 
    // do something with the returned data 
} 
+0

我是這樣實現的 –

+0

你的代碼並不意味着任何可能返回'nil'的東西。編輯你的問題,添加相關的代碼,並詳細描述什麼是返回的地方和什麼是預期的。 – vadian

0

首先你需要創建一個ObjectMapper映射你的對象,並使用AlamofireObjectMapper得到 試試這個代碼

request(url, method: .post, parameters:params).validate().responseObject{(response: 
     DataResponse<objectMapperclass>)in 

     switch response.result{ 

     case.success(let data): 
     let objects = data 

     case.faliure(_): 
    } 
} 
+0

你可以從我提供的鏈接中獲得教程 –