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 返回重复项的主要内容,如果未能解决你的问题,请参考以下文章

表格视图中的行不会扩展它的宽度并且是堆叠的 Swift

如何在 Swift 中同步表格视图和搜索栏选择?

来自 URL 的 Swift 表格视图图像在选择单元格之前不会显示

在 Swift 中删除表格视图的核心数据记录(行)

由于嵌入式表格视图,Swift 无法使用 hidesBarsOnSwipe

Swift UITableView(无部分)过滤到带有部分的表格视图