0

我得到一个NSDictionary低谷JSON。执行NSLog密钥顺序如下:4061740737409464106641306。这就是我想要的顺序,因为这些值是预先排序的。但是当循环通过时,NSDictionary我得到以下顺序:4061741066407374094641306。是否可以按照我使用时看到的顺序获得它NSLog

4

3 回答 3

4

字典(地图)未排序。迭代它们时没有保证顺序。您只能保证获得所有条目。

因此,您需要获取键,以您想要的方式对其进行排序,然后获取已排序键的值。

例如:

NSArray *keys = [myDictionary allKeys];
NSArray *sortedKeys = [keys sortedArrayUsingSelector:@selector(compare:)];

for (id key in sortedKeys) {
    id value = [myDictionary objectForKey:key];

    NSLog(@"%@ = %@", key, value);
}
于 2013-10-22T09:15:23.473 回答
2

没有按定义排序,因此NSDictionary当您添加值时,它们不必一直是相同的顺序。如果你想要一个有序的集合,你应该使用NSArray

于 2013-10-22T09:15:14.617 回答
-1

默认情况下,您没有该选项。你必须自定义。

http://www.cocoawithlove.com/2008/12/ordereddictionary-subclassing-cocoa.html

于 2013-10-22T09:18:05.053 回答