如何过滤 UITableView 中的重复数据

Posted

技术标签:

【中文标题】如何过滤 UITableView 中的重复数据【英文标题】:How to filter repeated data from a UITableView 【发布时间】:2014-09-15 14:10:35 【问题描述】:

我的应用扫描蓝牙设备并显示在表格中。但是,有时它会扫描同一设备两次或多次,并在表格中多次显示同一设备。

我需要过滤它。当设备的名称或 UUID 重复时,表格将只显示一次。

编辑: 这是我尝试过的,但不起作用...

            CBPeripheral peripheral = this._peripherals [indexPath.Row];
        List<string> filter = new List<string>();
        filter.Add (peripheral.Identifier.AsString());

        string[] array = ;

        foreach (var c in filter) 
            if (!ReferenceEquals (c, array)) 
                int x = array.Length;
                filter.CopyTo (0, array, 0, x);
            

        

        foreach (string i in array) 
            Console.WriteLine ("ARRAY: "+i.ToString());
        

【问题讨论】:

在链接上查看这个问题的公认答案! ***.com/questions/1439564/… 表格视图中的数据是什么样的?您是在使用模型对象,还是仅使用数组中的设备名称?当你扫描一个设备两次时,你有两个具有相同值的模型对象,还是数组中的同一个对象两次?如果是后者,请使用 NSSet 或 NSOrderedSet 而不是数组。 Nofel,我是一名 Xamarin 开发人员。你发给我一个带有 Xcode 代码的主题。我是初学者 【参考方案1】:

假设你的数据是List&lt;string&gt;,你要么需要

一个。向列表中添加新项目时检查重复项

if (!data.Contains(bt_id)) 
  data.Add(bt_id);

b.事后删除重复项

// requires System.Linq
var display_data = data.Distinct();

【讨论】:

【参考方案2】:

在浏览区域中的设备时,将每个设备存储在一个数组中。

那么你可以

清理双精度数组并使用它来填充表格视图 将数组中的每个对象添加到 tableview,并检查您添加到 tableview 的内容是否已存在于数组中。

或者,如果可以的话,只需将它们的 UDID 或任何可以使用的唯一代码存储在字典中,并在使用设备填充 tableview 之前使用与上述相同的技术。

如果我不清楚或需要更多帮助,请询问我

编辑 1:

您可以在这篇文章中找到一种清除双精度数组的方法: The best way to remove duplicate values from NSMutableArray in Objective-C?

您还可以使用排序描述符对数组进行排序,然后将每个元素与下一个元素进行比较,并在必要时删除。您可以在互联网上轻松找到有关排序数组以及清理数组的信息。

【讨论】:

好的,但是我如何清理阵列? 您在寻找代码还是概念?我会说循环并将每个对象与其他对象进行比较。如果它们匹配(使用您可以获得的任何唯一 ID),则移除其中一个双胞胎。 我编辑了我的答案,你现在还好吗?如果您需要更多帮助,可以使用一些代码编辑您的问题,以便我们使用您自己编辑的代码进行回复。 我使用一个列表 并将我可以用我的 iphone 找到的设备中的所有 UUID 添加到其中。然后我将 UUIDs 数组与变量数组进行比较,如果名称不存在,它将复制到为“null”的变量数组;所以会出现在 Console.WriteLine() 里面有什么问题?【参考方案3】:

如果您可以将值存储在 NSSet(也有一个 Mutable Variant)中,那么集合是独一无二的,因为它们不允许重复。请注意,尽管 NSSet 是无序的,因此该 NSOrderedSet 也有一个变体。玩一下集合,我认为它们非常适合您的目的,一旦您摆脱了欺骗,它们总是可以转换回数组。

【讨论】:

以上是关于如何过滤 UITableView 中的重复数据的主要内容,如果未能解决你的问题,请参考以下文章

NSPredicate 返回重复值

如何修复 UITableView 中的重复搜索结果

如何使用比较运算符过滤 SQLite 中的数据 [重复]

UITableView中的节标题视图重复

swift 4 中的 UITableView 和 UICollectionView 部分重复相同的数据

在 UITableView 内时 UITextField 中的文本重复