我收到NSDictionary
低谷JSON
。执行NSLog
时,密钥顺序如下: 40617 , 40737 , 40946 , 41066 , 41306 。这是我想要的顺序,因为这些值是事先排序的。但是当循环到NSDictionary
时,我得到以下顺序: 40617 , 41066 , 40737 , 40946 , 41306 。是否可以按照我在使用NSLog
时看到的顺序获取它?
答案 0 :(得分:4)
字典(地图)未分类。迭代它们时没有保证的顺序。您只能保证获得所有参赛作品。
因此,您需要获取密钥,按照您想要的方式对其进行排序,然后获取已排序密钥的值。
例如:
NSArray *keys = [myDictionary allKeys];
NSArray *sortedKeys = [keys sortedArrayUsingSelector:@selector(compare:)];
for (id key in sortedKeys) {
id value = [myDictionary objectForKey:key];
NSLog(@"%@ = %@", key, value);
}
答案 1 :(得分:2)
NSDictionary
未按定义排序,因此在添加值时,它们不必一直是相同的顺序。如果您想要一个有序的集合,您应该使用NSArray
答案 2 :(得分:-1)
默认情况下,您没有该选项。你必须自定义。
http://www.cocoawithlove.com/2008/12/ordereddictionary-subclassing-cocoa.html