如何在将字典的所有键和值转换为数组时保持排序顺序

时间:2012-11-08 12:56:16

标签: iphone nsdictionary

我的词典回复如下

 responceDict=  {
 "2012-11-01" = 46700;
 "2012-11-02" = 27400;
 "2012-11-03" = 19400;
 "2012-11-04" = 15100;
}

我想在两个数组中获取两个值,如

 arrayDate=[2012-11-01,2012-11-02,2012-11-03,2012-11-04]
 arrayVal=[46700,27400,19400,15100];

我用过

 arrayDate = [[NSMutableArray alloc] init];
 arrayVal = [[NSMutableArray alloc] init];

    for (id obj in responceDict.allKeys ) {
       // NSLog(@"%@  %@",obj,[responceArr valueForKey:obj]);
        [arrWaterReport addObject:obj];
        [arrDischarge addObject:[responceArr valueForKey:obj]];
    }

但在此我无法通过排序顺序维护日期序列。

所以任何人都建议我如何维持它的排序顺序。

2 个答案:

答案 0 :(得分:0)

NSDictionary未分类。它是一个哈希表,而不是一个有序列表。在将商品移至NS[Mutable]Array后,您需要进行订购。

答案 1 :(得分:0)

我有解决方案

 for (id obj in [[responceDict allKeys] sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)])
    {
        [arrayDate addObject:obj];
        [arrValue addObject:[responceDict valueForKey:obj]];
    }

由于