iOS - 按子值排序NSDictionary键

时间:2014-04-28 20:39:44

标签: ios sorting nsarray nsdictionary

我有一个NSDictionary,货币代码作为键和值,另一个NSDictionary包含一个NSString(货币名称)+一个NSArray(硬币列表):

Plist

目标是获得一个带有货币密钥(AED,ARS,...)的NSArray,按名称值排序。

我知道如何按键和值排序,但无法弄清楚如何按NSDictionary中的NSDictionary内的值进行排序。

下面只给出了一个带有值的排序NSArray,但是我松开了键:

NSMutableArray *dictValues = [[self.currencyDict allValues] mutableCopy];

    [dictValues sortUsingComparator: (NSComparator)^(NSDictionary *a, NSDictionary *b)
     {
         NSString *key1 = [a objectForKey: @"name"];
         NSString *key2 = [b objectForKey: @"name"];

         return [key1 compare: key2];
     }
     ];

1 个答案:

答案 0 :(得分:2)

为了在不丢失密钥的情况下将dictionary of dictionaries转换为array of dictionaries,第一步是将密钥放入字典中。换句话说,您需要转换此

Root
  AED
    name     "some name"
    objects  ...
  ARS
    name     "other name"
    objects  ...

到这个

Root
  AED
    name     "some name"
    objects  ...
    key      "AED"
  ARS
    name     "other name"
    objects  ...
    key      "ARS"

然后调用allValues并对生成的数组进行排序。