2015-12-03 88 views
2

我真的很新的斯威夫特,對不起,如果這是一個愚蠢的問題...似乎有關於這個問題很多,但沒有人使用最新版本的Alamofire獲取JSON陣列Alamofire + SwiftyJSON

Alamofire.request(.GET, url) 
    .responseJSON { response in 

    let json = JSON(response.data!) 
    debugPrint(json) 
    self.delegate?.didReceiveAPIResults(json) 
} 

和委託的didReceiveAPIResults方法

func didReceiveAPIResults(results: JSON) { 
    dispatch_async(dispatch_get_main_queue(), { 
     self.tableData = results["items"].arrayObject! 
     self.appsTableView!.reloadData() 
    }) 
} 

這裏的JSON響應:

{ 
    "items": [ 
     { 
      "id": 1, 
      "name": "Sample 1" 
     }, 
     { 
      "id": 2, 
      "name": "Sample 2" 
     } 
    ] 
} 

我希望debugPrint打印類似於JSON的,相反,它只是打印unknown

如果我本身debugPrint response.data,這似乎是編碼...

Optional(<7b226461 7461223a 5b7b2269 64223a36 2c226e61 6d6522...... 

然後我results["items"].arrayObject!線有這個錯誤:

fatal error: unexpectedly found nil while unwrapping an Optional value 

回答

2

而不是抓住response.data,我建議抓住response.result.value。當你做responseJSON時,Alamofire會爲你做JSON解析,並且你應該隨時抓住這個被解析的對象。

Alamofire.request(.GET, url) 
    .responseJSON { response in 
     if let value = response.result.value { 
      let json = JSON(value) 
      self.delegate?.didReceiveAPIResults(json) 
     } 
} 
+0

完美的作品,謝謝。現在我在Alamofire文檔中看到'response.result.value'很清楚,我只是錯過了 – andrewtweber