解析json并用tableview显示

时间:2014-10-27 06:08:09

标签: ios uitableview swift

我是Swift的新手,不擅长操纵json和hash。

这是我的JSON [用户数组]

[
{"name": "mary", "age": 24, "detail": "i love ..."},
{"name": "mark", "age": 28, "detail": "i love ..."}
]

我想先显示每个用户的名字,然后再显示他们的age

如果您点击姓名或年龄,则会显示detail

我只知道如何迭代数组并将值放在单元格上。

就像这样,但现在知道如何用字典显示tablecells

cell.textLabel.text = self.items[indexPath.row]

我怎么知道每个循环中应该使用哪个key

func tableView(invoice: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

我怎么知道这一次,我应该使用name,下次我应该使用age来展示我的手机?

enter image description here

2 个答案:

答案 0 :(得分:1)

由于您的原始JSON是一个数组,您可以解析字典中的JSON元素,然后在您的单元格中使用它。

func parseJSONArray(jsonData: NSData) -> Array<NSDictionary>{
    var error: NSError?
    var usersDictionary = NSJSONSerialization.JSONObjectWithData(jsonData, options: NSJSONReadingOptions.MutableContainers, error: &error) as Array<NSDictionary>
    return usersDictionary
}

然后您可以使用此usersDictionary来获取用户信息:

cell.textlabel.text = usersDictionary[indexPath.row].valueForKey("name")

关于关键决策的逻辑,请尝试以下内容:

var index = indexPath.row/2;
var key = indexPath.row%2;

if (key == 0) { //show the name cell
    cell.textlabel.text = usersDictionary[index].valueForKey("name")
} else { //show the age cell
    cell.textlabel.text = "Age " + usersDictionary[index].valueForKey("age")
}

您可以使用类似的单元格字体样式和颜色逻辑。它不是很复杂。只需确保将行数作为json数组大小的两倍(每个键一个单元格),并确保单元格选择方法的正确逻辑。

答案 1 :(得分:0)

尝试此代码,因为名称显示在偶数单元格中,年龄显示为奇数

var index = indexPath.row/2;
var isAgeCell = indexPath.row%2
if (isAgeCell == 0) {
    cell.textLabel.text = self.items[index]["name"]
}
else {
    cell.textLabel.text = self.items[index]["age"]
}