我使用以下语法打印字典:
for(id key in myDict)
NSLog(@"key=%@ value=%@", key, [myDict objectForKey:key]);
但我注意到,oeder并不是按照指数计算的。替他说话如果我的字典是
myDict = { 1:a, 2:b, 3:c....26:z}
上面的代码不会以oreder 1,2,3,4打印值,而是按随机顺序打印。
如何使用枚举代码(如上面指定的)顺序遍历该字典。我使用的键是一个字符串,如"ajay“、”abhi:等“
编辑:将密钥复制到另一个数组不可避免吗??那是唯一的办法。
发布于 2013-03-19 02:58:34
How do I get to traverse that dictionary in order using enumeration code, like the one specified above. The key in my usage is a string such as "ajay" " abhi: etc
根据您在setObject中的NSDictionary,您不能按该顺序检索。
如果要以除添加顺序以外的任何排序顺序获得结果,请执行以下操作。
然后,您可以获得作为数组的所有键,allKeys,然后对这个数组进行排序,然后从字典中检索对象。
NSMutableDictionary *dict=[NSMutableDictionary new];
[dict setObject:@"anoop" forKey:@"aKey"];
[dict setObject:@"john" forKey:@"jKey"];
[dict setObject:@"baban" forKey:@"bKey"];
[dict setObject:@"chandan" forKey:@"cKey"];
NSArray *keys=[dict allKeys];
NSArray *sortedKeys=[keys sortedArrayUsingSelector:@selector(compare:)];
for (NSString *key in sortedKeys) {
NSLog(@"Key: %@, Value : %@",key,dict[key]);
}
发布于 2013-03-19 02:55:33
如果需要按特定顺序排列项目,则应该使用NSArray
。字典键的顺序不能保证。
发布于 2013-03-19 02:55:42
你可以拿到钥匙就像.
NSArray *keys = [myDict allKeys];
然后对键进行排序,并迭代排序的键数组,以便按顺序获得值。
https://stackoverflow.com/questions/15497434
复制相似问题