解析 json 并用 tableview 显示

Posted

技术标签:

【中文标题】解析 json 并用 tableview 显示【英文标题】:Parse json and show with tableview 【发布时间】:2014-10-27 06:08:09 【问题描述】:

我是 Swift 新手,不擅长处理 json 和 hash。

这是我的 JSON [用户数组]

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

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

如果您点击那里的姓名或年龄,它将显示detail

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

像这样,但现在知道如何用字典显示表格单元格

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

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

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

我怎么知道这次我应该用name,下次我应该用age来显示我的单元格?

【问题讨论】:

可能是cell.textLabel.text = self.items[indexPath.row]["name"];? 但是显示age 怎么样?也许有很多用户。逻辑似乎很复杂 那么你使用"age" 而不是"name"。真的有那么复杂吗? 创建一个对象数组 【参考方案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 个单元格)以及单元格选择方法的正确逻辑。

【讨论】:

嗨如何决定在每个循环中使用哪个键 嗯,这取决于您的桌子设计。如果设计与您在屏幕截图中给出的一样,请告诉我? 这回答了你的问题吗?【参考方案2】:

试试这个代码,因为名字显示在偶数单元格中,年龄显示在奇数单元格中

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"]

【讨论】:

嗨,还有更优雅的方法吗?比如一次显示 2 个单元格,一个用于“姓名”,一个用于“年龄”

以上是关于解析 json 并用 tableview 显示的主要内容,如果未能解决你的问题,请参考以下文章

Swift:如何在 TableView 内的 CollectionView 中显示解析的 JSON 数据?

iOS 中 JSON 解析中的 TableView 中未显示图像

如何从服务器解析 json 值,并将其显示在 tableview 单元格中

JSON Parse iOS Array of Dictionaries 解析成数组只显示 tableview 中的最后一个对象

在 tableview 中解析字典的 JSON 数组

iOS开发问题:已经获得了json字符串,怎么解析并显示到tableview上