我希望我能正确地表达我的问题,如果我没有,我道歉。不完全确定发生了什么。
所以我用
解析了JSONlet jsonData:NSDictionary = NSJSONSerialization.JSONObjectWithData(responseData!, options: NSJSONReadingOptions.MutableContainers, error: &errors) as! NSDictionary
产生:
{
"tests" = (
{
age = 50;
gender = m;
vehicle = 1;
},
{
age = 73;
gender = m;
vehicle = 14;
},
{
age = 50;
gender = m;
vehicle = 22;
},
{
age = 50;
gender = m;
vehicle = 23;
},
。 。
当我打印时(jsonData [" tests"]我得到的基本上与NSArray相同,除了没有"测试{...}" - 看起来几乎是除此之外。
我想用" vehicle"填充tableView。从每个元素进入,所以我怎样才能得到一个数组或某些东西只用于" vehicle"从每个进入。唯一的关键"我在使用原始NSDictionary打印allKeys时得到的是"测试"并且我不能将jsonData [" tests"]作为NSDictionary来制作新的密钥,例如"年龄,性别......"
tl; dr我怎样才能从NSDictionary" jsonData"到一组看起来像[1,14,22,23]的车辆号码。
有什么建议吗?
答案 0 :(得分:0)
到目前为止,已完成工作,只需将包含单个键/值对的字典解包为值。
但是,您实际上并不需要或想要创建一个与现有数据不同的阵列。只需在表dataSource函数中使用正确的映射。将它保存为字典对象数组。
if let a = jsonData["tests"] as? [[String: AnyObject]] {
myPersonArray = a
}
else { /* handle error */ }
// later
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
// get the cell, then:
let vehicleNum = myPersonArray[indexPath.row]["vehicle"] as! Int
cell.text = "\(vehicleNum)"
// whatever else, then return the cell
}
答案 1 :(得分:0)
看起来你的json是一个包含字典数组的字典,所以你应该能够将jsonData["tests"]
中出现的内容作为一个数组进行转换,然后使用.map()来创建一个数组车辆号码如下:
if let dictArray = jsonData["tests"] as? [[String: AnyObject]] {
var vehicleArray = dictArray.map({ dict in
dict["vehicle"]
})
//Do something with vehicle array here
}