2016-08-17 69 views
-1

我试着用resultsArray = [AnyObject]()以及resultsArray = [JSON]()解析数据都让我崩溃json数据解析有什么问题?

我的数据:

data = (
     { 
     id = 2141 
     results = (
       { 
       city = Delhi; 
       company = "AIR CREATOR"; 
       country = IN; 
       }, 
       { 
       city = Dubai; 
       company = "Alwali"; 
       country = UAE; 
       } 
     ); 
    }) 

现在,当我分析我在reloadData得到崩溃:

if let val = data["results"] { 
      let json = JSON(val) 
      let array = json.arrayValue 

      dispatch_async(dispatch_get_main_queue(), { 
       for a in array{ 
        self.resultsArray.append(a) 
       } 
       self.myTableView.reloadData()//<--crash point 
      }) 
     } 

当我打印

print(self.resultsArray[0]) 

{ "city" : "Delhi", "country" : "IN", "company" : "AIR CREATOR" }

print(self.resultsArray[0]["country"]) 

IN

+0

尝试打印总结果数组。 –

+0

检查你的IBOutlet的tableVIew已连接吗? –

+0

全部连接并检查。把我的头发拉出来 –

回答

0

它应该是这样的:每行(作为一个单独的命令:

if let array = data["results"] { 
    // var resultsArray: [[String: String]] = [] // your property should be like this 
    dispatch_async(dispatch_get_main_queue(), { 
    for a in array { 
     self.resultsArray.append(a) 
    } 
    print(resultsArray) 
    self.myTableView.reloadData() 
    }) 
} 
+0

不是类型不匹配resultsArray无法以这种方式存储JSON –

+0

不是数组吗?在我的代码中,它是一个JSON数组。 –

+0

你不想让你的阵列像{“city”:“Delhi”,“country”:“IN”,“company”:“AIR CREATOR”} –

0

尝试reloadData之前和之后(LLDB)写你的调试区域添加一个断点)

po self.myTableView 
po self.myTableView.delegate 
po self.myTableView.dataSource 

检查任何零值的输出。

编辑:
还有一两件事,我面临着同样的问题之前,原因是我的自定义单元格的问题,有一个与细胞网点之一的连接有问题,在连接检查惊叹号督察轻拍故事板。