Swift:在表格视图中过滤结果,因此它不会从 JSON 返回重复项
Posted
技术标签:
【中文标题】Swift:在表格视图中过滤结果,因此它不会从 JSON 返回重复项【英文标题】:Swift: Filter the results in a table view so it does not return duplicates from the JSON 【发布时间】:2016-10-27 03:56:28 【问题描述】:我有一个 JSON 文件,我根据键将值从表视图中提取出来。我希望我的表格视图只显示一个值,如果它不在表格中。换句话说,我只想要表中的值一次,即使它们与键多次关联。
在这种特殊情况下。 JSON 文件中的每个条目都与 9 个媒体行业中的 1 个相关联。如果媒体行业已经打印到表格视图中,我不想在表格视图中再次看到它。
这是我的代码。我一直无法弄清楚如何防止重复。这会显示每个值,即使它是重复的。
func parseJSON()
do
let data = NSData(contentsOfURL: NSURL(string: "https://jsonblob.com/api/jsonBlob/580d0ccce4b0bcac9f837fbe")!)
let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)
for anItem in jsonResult as! [Dictionary<String, AnyObject>]
let mifiIndustry2 = anItem["mediaIndustry"] as! String
let newIndustry = Industry(industryName: mifiIndustry2)
industryOfMifi.append(newIndustry)
catch let error as NSError
print(error.debugDescription)
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
if let cell = tableView.dequeueReusableCellWithIdentifier("IndustryCell", forIndexPath: indexPath)as? IndustryCell
let industry: Industry!
industry = industryOfMifi[indexPath.row]
cell.configureCell(industry)
return cell
else
return UITableViewCell()
【问题讨论】:
【参考方案1】:我会使用一个集合来快速检查该值是否重复。
在你的 for 循环之前,声明一个 Set:
var industrySet = Set<String>()
为 mifiIndustry2 设置变量后,检查该集合是否包含 mifiIndustry2:
let mifiIndustry2 = anItem["mediaIndustry"] as! String
if !(industrySet.contains(mifiIndustry2))
//if the set doesn't contain the string, add it so that you can check for it again later
industrySet.insert(mifiIndustry2)
//since it passed the check and is not a duplicate, initialize it as Industry and add to industry array
let newIndustry = Industry(industryName: mifiIndustry2)
industryOfMifi.append(newIndustry)
【讨论】:
以上是关于Swift:在表格视图中过滤结果,因此它不会从 JSON 返回重复项的主要内容,如果未能解决你的问题,请参考以下文章
来自 URL 的 Swift 表格视图图像在选择单元格之前不会显示