的NSMutableSet intput是不以同样的顺序输出为[关闭](NSMutableSet i

2019-11-01 21:44发布

这个问题是不太可能有帮助的任何未来的访客; 它只是一个小的地理区域,在一个特定的时刻,或非常狭小的情况,是不是一般适用于互联网的世界各地的观众有关。 如需帮助使这个问题更广泛地适用, 访问帮助中心 。

我已经添加的对象与此代码的NSMutableSet:

_theQuestionsSet = [[NSMutableSet alloc]initWithObjects:@802, @229, @522, @712, @628, @84, @412, @726, @284, @699, @1765, @1754, @1528, @2230, @2005, @1494, @1348, @2132, @2040, @2183, nil];
NSLog(@"%@", _theQuestionsSet);

为什么在同一顺序的输出还不如插入?

2013-03-28 16:41:50.178 xxxxxxxx[4011:c07] {(
412,
1754,
628,
726,
1528,
284,
1348,
84,
2005,
699,
522,
712,
1494,
2132,
2230,
1765,
2040,
802,
2183,
229
)}

Answer 1:

因为一个的NSMutableSet没有秩序。 阵列是有序的; 一组是没有的。 (的有序集合类的桥梁的差距,但是这不是你使用的是什么。)

阅读优秀的文档:

https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSSet_Class/Reference/Reference.html

什么是第一句话?

该NSSet中,的NSMutableSet,和NSCountedSet类声明的编程接口,以对象的无序集合。

无序 。 故事结局。

另请参见我的书:

http://www.apeth.com/iOSBook/ch10.html#_nsset_and_friends

您可以步行穿过(枚举),一组用for...in结构,虽然订单当然是不确定的。

顺序是不确定的

(它从你原来的问题听起来好像你真正想要的是一个NSMutableArray,你再洗牌。我有代码!但是,这将是一个不同的问题。)



Answer 2:

因为它不是命令。 使用NSMutableOrderedSet如果你需要。



Answer 3:

的NSMutableSet顺序是不维护。 使用NSMutableOrderedSet或NSMutableArray里维持秩序



文章来源: NSMutableSet intput is not in the same order as output [closed]