Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当对象具有相同的值时,如何在tableView中显示JSON数据?_Json_Swift_Uitableview - Fatal编程技术网

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

当对象具有相同的值时,如何在tableView中显示JSON数据?,json,swift,uitableview,Json,Swift,Uitableview,我试图基于具有相同值的对象在tableview单元格中显示JSON数据 现在,我能够将所有JSON数据显示到我的单元格行中,但我无法排除不具有相同对象值的数据 我正在使用此设置获取数据: func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { // Retrieve cell let cellIdentifier: St

我试图基于具有相同值的对象在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"
   }
]
我只想显示具有相同“电影ID”的结果,如下所示:

标题:伟大的标题1
接受:测试

标题:伟大的标题3

获取:测试1,2,3

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

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
}
然后,您可以查看哪些具有相同电影ID的多个对象

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

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

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
}
然后,您可以查看哪些具有相同电影ID的多个对象

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

在后端,您只希望返回电影ID数量计数大于1的记录

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

在后端,您只希望返回电影ID数量计数大于1的记录

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

有些问题还不太清楚。只有一个电影ID会被复制吗?你事先知道是什么吗?如果没有呢?如果不止一个呢?在任何情况下,这都需要一些预处理。tableView函数不会自动对此进行筛选。也许用movieid作为键构建一个字典,值是一个对象数组,然后在键上迭代寻找计数大于1的数组?可能有多个movieid可以复制。有些可能无法复制。我也不知道之前会复制哪些电影ID。如何创建字典?这个JSON是从我的PHP文件创建的,该文件将mysql数据库表中的项目转换为JSON。数据库是通过iOS应用程序帖子填充的。在某些方面不太清楚。只有一个电影ID会被复制吗?你事先知道是什么吗?如果没有呢?如果不止一个呢?在任何情况下,这都需要一些预处理。tableView函数不会自动对此进行筛选。也许用movieid作为键构建一个字典,值是一个对象数组,然后在键上迭代寻找计数大于1的数组?可能有多个movieid可以复制。有些可能无法复制。我也不知道之前会复制哪些电影ID。如何创建字典?这个JSON是从我的PHP文件创建的,该文件将mysql数据库表中的项目转换为JSON。数据库是通过iOS应用程序帖子填充的。看,你给我swift代码,这就是我所想的。这是一个更好的解决方案。问题是,我将不得不创建许多swift文件来调用不同的后端文件。我希望对swift文件中的数据库进行一次调用,然后将其设置为另一个viewcontroller将根据它所在的视图从该swift文件中提取所需的特定数据。此外,JSON将是动态的,我无法事先知道ID是什么。我正在使用电影数据库API。用户将能够单击具有唯一id的电影。然后,他们单击一个按钮来创建关于该电影的“拍摄”,并将其发送到数据库。我希望根据电影id检索这些特定的拍摄。为什么只希望电影id重复拍摄?我不知道什么是“电影数据库API”。您有权配置这些API吗?如果是这样,我建议您创建一个新的API来生成我发布的查询。如果您必须在客户端完成这项工作,那么您需要实现一个字典,以获得@GntlmnBndt所回答的计数。这是一个更好的解决方案。问题是,我将不得不创建许多swift文件来调用不同的后端文件。我希望对swift文件中的数据库进行一次调用,然后将其设置为另一个viewcontroller将根据它所在的视图从该swift文件中提取所需的特定数据。此外,JSON将是动态的,我无法事先知道ID是什么。我正在使用电影数据库API。用户将能够单击具有唯一id的电影。然后,他们单击一个按钮来创建关于该电影的“拍摄”,并将其发送到数据库。我希望根据电影id检索这些特定的拍摄。为什么只希望电影id重复拍摄?我不知道什么是“电影数据库API”。您有权配置这些API吗?如果是这样,我建议您创建一个新的API来生成我发布的查询。如果必须在所有客户端执行此操作,则需要实现一个字典,以获得@GntlmnBndt回答的计数。