2017-01-19 6 views
0

그래서 나는 내가 debugPrint(response.result.value) 출력을 얻을 다음 코드Alamofire의 JSON 요청

@IBOutlet var jokes_list: UITableView! 
var CountCells = 0 
var CellsData = [NSArray: NSArray]() 

override func viewDidLoad() { 

    super.viewDidLoad(); 

    Alamofire.request("http://localhost:8080/jokes.php").responseJSON{ response in 
     debugPrint(response.result.value) // result of response serialization 

     if let JSON = response.result.value as? [NSArray: NSArray] { 
      self.CellsData = JSON 
      self.CountCells = JSON.count 
      self.jokes_list.reloadData() 
     }else{ 
      debugPrint("failed") 
     } 
    } 



    // Do any additional setup after loading the view, typically from a nib. 
} 

이 실패했지만 나는 또한 다른 문에서 failed를 얻을. 내가 같이 JSON을 설정할 수없는 이유

debugPrint(response.result.value)

Optional(<__NSArrayI 0x7fc9c6056a00>(
{ 
    added = "2017-01-10 19:07:14"; 
    description = "Ora de religie \U00een scoala. Profesoara: \U2013 Si copii, amintiti-va permanent: cei care vor \U00eenvata pentru note de 9 si 10 vor nimeri \U00een 

그것은 매우 긴 출력, 그래서 내가 여기에 모든 것을 붙여 넣을 수 있다고 생각하지 않습니다의 출력 비트는, 그러나 질문은 배열에서 CellsData 코드에, 그래서 그것을 목록을 표시하는 데 사용할 수 있습니다.

+2

어떤 종류의 JSON이'[NSArray : NSArray]'로 표현 될 수 있습니까? – user28434

+0

문자열로 사용했지만 테스트 용으로 변경했습니다. 죄송합니다. – Uffo

답변

2

as? [NSArray: NSArray] 확실하게 올바르지 않습니다. 캐스트가 실패하고 else 분기가 실행됩니다. 즉, 키와 값의 유형이 NSArray이고 사전이나 배열이 있으므로 사전에 제공하지 않은 응답에 따라 as? [[String: Any]] 또는 그와 비슷한 내용의 사전을 사용해야합니다.

var CellsData = [NSArray: NSArray]()은 반드시 변경해야합니다. (btw : 코코아 터치/신속한 명명 규칙을 숙지하십시오.)

+0

var CellsData = [String : Any]()로 변경했으며 JSON = response.result.value를 true로 변경했습니다. {String : Any} {여전히 "실패"합니다. – Uffo

+0

방금 ​​배웠습니다. 약 2 일 동안이 문제로 고생하고 있습니다. – Uffo

+1

물론 실패합니다. 사전 배열을 가지고 있지만 입력하면됩니다. 사전. "추가"쌍의 괄호가 중요합니다. – vikingosegundo