2

现在,我在这里和谷歌上查看了这个,似乎每个人都NSSet用来删除欺骗。这很酷,但似乎这种方法也删除了排序。

是否有 1) 一种按字母顺序对 NSSet 进行排序的方法?2)一种更好的方法来删除循环NSMutableArray内外的重复,我通过从文件中for读取它们将它们添加到数组中。.csv

谢谢:)

4

3 回答 3

3

我相信您想使用NSOrderedSet. 这是关于它的文档:

http://developer.apple.com/library/mac/#documentation/Foundation/Reference/NSOrderedSet_Class/Reference/Reference.html

于 2013-01-28T19:15:00.470 回答
1

NSOrderedSet你可以从你的数组中构造一个*;using+orderedSetWithArray:将保留数组的现有顺序。如果它的顺序不正确,则不能直接对集合进行排序,因此使用有序集合没有什么意义,但是您可以轻松构造一个正则NSSet并将其排序到另一个数组中,使用-sortedArrayUsingDescriptor:,甚至更好allObjects,然后的任何NSArray排序方法。

另一方面(我可能会得到一些关于这个的讨厌的评论,但是......),因为NSArray并且NSSet似乎是建立在相同的哈希表功能之上的,你可以这样做:

id newObj = // Acquire new object from wherever
while( newObj ){
    if( ![arrayImConstructing containsObject:newObj] ){
        [arrayImConstructing addObject:newObj]
    }
    newObj = // Acquire next object
}

无论如何,这基本上是有序集合必须做的事情,并且很可能您的数组足够小(如果您将其放入 aUIPicker中),您根本不会注意到性能差异。不过,测量两者,然后再决定。


*NSOrderedSet适用于 iOS > 5.0(或 OS X > 10.7)。

于 2013-01-28T20:07:37.723 回答
0

NSOrderedSet 为您提供一组排序。

于 2013-01-28T19:15:43.983 回答