我一定是有什么奇怪的误解……
考虑:
NSSet * mySet = [NSSet setWithArray:@[@1, @9, @3]] ;
NSOrderedSet * mySortedSet = [NSOrderedSet orderedSetWithSet:mySet] ;
for (NSNumber * n in mySet) {
NSLog(@"unsorted: %@", n) ;
}
for (NSNumber * n in mySortedSet) {
NSLog(@"--sorted: %@", n) ;
}
和控制台日志:
2014-05-05 20:38:46.645 WoGa[50557:60b] unsorted: 9
2014-05-05 20:38:48.675 WoGa[50557:60b] unsorted: 1
2014-05-05 20:38:49.875 WoGa[50557:60b] unsorted: 3
2014-05-05 20:38:54.277 WoGa[50557:60b] --sorted: 9
2014-05-05 20:38:55.544 WoGa[50557:60b] --sorted: 1
2014-05-05 20:38:56.684 WoGa[50557:60b] --sorted: 3
嗯?那是如何“订购”的?如果需要,我对自己进行排序没有问题,但是 NSOrderedSet 到底是什么?
我可以接受元素的顺序mySet
是不可预测的。但是如果不按某种顺序排序[NSOrderedSet orderedSetWithSet:mySet]
应该达到什么目的呢?
从文档中:
当元素的顺序很重要并且测试对象是否包含在集合中的性能是一个考虑因素时,您可以使用有序集合作为数组的替代方案——测试数组的成员资格比测试集合的成员资格慢。
同样,NSOrderedSet orderedSetWithSet:
应该为您提供什么命令?