我已使用以下代码将对象添加到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
)}
答案 0 :(得分:4)
因为它没有订购。如果需要,请使用NSMutableOrderedSet
。
答案 1 :(得分:3)
因为NSMutableSet没有订单。一个数组是有序的;一套不是。 (有序集合弥补了差距,但这不是你正在使用的。)
阅读精美的文档:
第一句话是什么?
NSSet,NSMutableSet和NSCountedSet类将编程接口声明为无序的对象集合。
无序。故事结束。
另见我的书:
http://www.apeth.com/iOSBook/ch10.html#_nsset_and_friends
您可以使用
for...in
构造遍历(枚举)一个集合,但该顺序当然未定义。
订单未定义。
(听起来你原来的问题好像你真正想要的是一个NSMutableArray,然后你随后洗牌。我有代码!但那将是一个不同的问题。)
答案 2 :(得分:1)
不维护NSMutableSet顺序。使用NSMutableOrderedSet或NSMutableArray维护顺序