当对象具有相同的值时,如何在tableView中显示JSON数据?

时间:2019-05-07 21:52:09

标签: json swift uitableview

我正在尝试基于具有相同值的对象在tableview单元格中显示JSON数据。

现在,我可以将所有JSON数据显示到单元格行中,但无法排除对象值不同的数据。

我正在使用此设置来获取数据:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        // Retrieve cell
        let cellIdentifier: String = "takesTableViewCell"
        let myCell: TakesTableViewCell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier)! as! TakesTableViewCell

        // Get the location to be shown
        let item: LocationModel = feedItems[indexPath.row] as! LocationModel

        // Get references to labels of cell
        myCell.mainNameLabel.text = item.title
        myCell.mainTakeLabel.text = item.take

        return myCell
    }

这是我的示例JSON数据

[
   {
      "id":"1",
      "title":"Great Title 1",
      "take":"Testing !!!",
      "movieid":"299534"
   },
   {
      "id":"2",
      "title":"Great Title 2",
      "take":"Testing 1,2,3",
      "movieid":"299666"
   },
   {
      "id":"3",
      "title":"Great Title 3",
      "take":"Testing 1,2,3",
      "movieid":"299534"
   }
]

我只想显示具有相同“电影”的结果,如下所示:

标题:大标题1
参加:测试!!!

标题:大标题3
接受:测试1,2,3

2 个答案:

答案 0 :(得分:2)

在后端,您只想返回影片编号数量> 1的记录

SELECT *
FROM movie_table
GROUP BY movie_id
HAVING COUNT(movie_id) > 1;

SQL query for finding records where count > 1

答案 1 :(得分:0)

首先将对象数组转换为字典。

var movieDict: [String:[[String:String]]] = []
for movObj in jsonData {
    guard let key = movObj["movieid"] else { continue }
    var objArr = movieDict[key] ?? []
    objArr.append(movObj)
    movieDict[key] = objArr
}

然后,您可以浏览一下哪些对象具有多个具有相同movieid的对象。

for (k, v) in movieDict {
    if v.count > 0 {
        // either track the keys, or tableData = v
    }
}