如何过滤 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<string>
,你要么需要
一个。向列表中添加新项目时检查重复项
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),则移除其中一个双胞胎。 我编辑了我的答案,你现在还好吗?如果您需要更多帮助,可以使用一些代码编辑您的问题,以便我们使用您自己编辑的代码进行回复。 我使用一个列表如果您可以将值存储在 NSSet(也有一个 Mutable Variant)中,那么集合是独一无二的,因为它们不允许重复。请注意,尽管 NSSet 是无序的,因此该 NSOrderedSet 也有一个变体。玩一下集合,我认为它们非常适合您的目的,一旦您摆脱了欺骗,它们总是可以转换回数组。
【讨论】:
以上是关于如何过滤 UITableView 中的重复数据的主要内容,如果未能解决你的问题,请参考以下文章