1
dictionary = (_NSDictionaryM) 3 key/value pairs
    [0] = @"CELL2" : 1 : key/value pair
        key = (__NSCFString) @"CELL2"
        value = (__NSDictionaryM) 1 key/value pair
            [0] = @"download" : @"Text Response"
                key = (__NSCFString) @"download"
                value = (__NSCFString) "Text Response"
    [1] = @"CELL1" : 1 : key/value pair
        key = (__NSCFString) @"CELL1"
        value = (__NSDictionaryM) 1 key/value pair
            [0] = @"download" : @"Text Response"
                key = (__NSCFString) @"download"
                value = (__NSCFString) "Text Response"
    [2] = @"CELL3" : 1 : key/value pair
        key = (__NSCFString) @"CELL3"
        value = (__NSDictionaryM) 1 key/value pair
            [0] = @"download" : @"Text Response"
                key = (__NSCFString) @"download"
                value = (__NSCFString) "Text Response"

我有一本看起来像上面的字典。使用快速枚举,我可以获得“文本响应”(这是我最终想要的,我不关心其他任何事情)。问题是当我将它们存储到数组中时,我还需要按顺序排列它们。我将它们放入的顺序在每部词典中是一致的(例如,我将始终将它们放入其中2, 1, 3,),但对于我正在浏览的每部词典来说都是不同的。

附加信息: dictionary可以有任意数量的条目,但它的内部总是相同的,我必须从字典中提取数据,它不能以任何其他方式传递给我。

我尝试过的尝试最终得到了与我目前相同的结果(我得到了text response但乱序),否则它会抛出异常,因为我正在对没有响应的东西执行操作。

4

1 回答 1

3

快速枚举以实现定义的顺序提取字典键(具体而言,以与该字典键的哈希码一致的顺序)。如果您需要强制执行特定顺序,请将键从字典中拉出到 中NSArray,根据自己的喜好对该数组进行排序,然后快速迭代数组,从字典中按排序顺序为每个键提取值:

NSDictionary *dict = ...
// You can use any of the sortedArrayUsingXYZ methods below
NSArray *sortedKeys = [[dict allKeys] sortedArrayUsingDescriptors:...];
for (NSString *key in sortedKeys) {
    id obj = [dict getObjectForKey:key];
    ...
}
于 2013-07-16T18:20:19.450 回答