现在,我在这里和谷歌上查看了这个,似乎每个人都NSSet
用来删除欺骗。这很酷,但似乎这种方法也删除了排序。
是否有 1) 一种按字母顺序对 NSSet 进行排序的方法?2)一种更好的方法来删除循环NSMutableArray
内外的重复,我通过从文件中for
读取它们将它们添加到数组中。.csv
谢谢:)
现在,我在这里和谷歌上查看了这个,似乎每个人都NSSet
用来删除欺骗。这很酷,但似乎这种方法也删除了排序。
是否有 1) 一种按字母顺序对 NSSet 进行排序的方法?2)一种更好的方法来删除循环NSMutableArray
内外的重复,我通过从文件中for
读取它们将它们添加到数组中。.csv
谢谢:)
我相信您想使用NSOrderedSet
. 这是关于它的文档:
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)。
NSOrderedSet 为您提供一组排序。