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
但是没有顺序)或者它会抛出一个异常,因为我正在对某些事情进行操作回应它。
答案 0 :(得分: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];
...
}