防止表视图中的重复副本

时间:2010-09-30 03:04:21

标签: nsmutablearray nsset

我有一个NSMutableArray,我通过表格视图显示。问题是,当我向这个数组添加对象时,我不希望有重复项。

如果我从NSMutableArray创建NSMutableSet,然后将对象添加到NSMutableSet然后将其转换回NSMutableArray,那么在添加项目之前,通过循环检查NSMutableArray是否更有效?

2 个答案:

答案 0 :(得分:4)

通常是的,使用集合会更有效。构造一组n个项目是O(n log n)。通过循环查找数组中的所有重复项将是O(n^2)。 (如果你真的确定你可以获得O(n log n),但是你必须要重写已经做过的设置。)

答案 1 :(得分:1)

您可以使用

检查添加的对象是否存在
- (NSUInteger)indexOfObject:(id)anObject

如果对象存在于数组中,它将为您提供一个索引,否则返回

NSNotFound

所以你可以在向数组添加元素之前执行if。

我觉得它在内存方面要好一些,因为你不会创建对象。

希望这有帮助