当对象具有相同的值时,如何在tableView中显示JSON数据?
我试图基于具有相同值的对象在tableview单元格中显示JSON数据 现在,我能够将所有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
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回答的计数。