按升序排序NSDictionary

iPh*_*lly 0 sorting iphone json objective-c ios

我试图NSDictionary按升序排序.我正在使用此代码:

NSDictionary *valDict = self.mGetDataDict[key][rowKey];

for (NSString *valueKey in
     [[valDict allKeys] sortedArrayUsingSelector:@selector(compare:)])
{                
    if ([valueKey isEqualToString:@"attr"])
    {
        dictRow = self.mGetDataDict[key][rowKey][valueKey];
    }
    else {
        NSString *valKey = self.mGetDataDict[key][rowKey][valueKey];
        [arrSeatsStatus addObject:valKey];
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的输出:

1 = off;
10 = off;
2 = on;
3 = on;
4 = on;
5 = on;
6 = on;
7 = on;
8 = on;
9 = on;
Run Code Online (Sandbox Code Playgroud)

这是必需的输出:

1: "off",
2: "on",
3: "on",
4: "on",
5: "on",
6: "on",
7: "on",
8: "on",
9: "on",
10: "off"
Run Code Online (Sandbox Code Playgroud)

所需的输出是来自JSON的实际值.

dav*_*ndo 6

您可以像这样使用NSSortDescriptor:

NSArray* array1 = @[@"1 = off", @"10 = off", @"2 = on", @"3 = on"];
NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"" ascending:YES selector:@selector(localizedStandardCompare:)];

NSLog(@"Ordered array: %@", [array1 sortedArrayUsingDescriptors:@[ descriptor ]]);
Run Code Online (Sandbox Code Playgroud)

产生这个输出:

2013-06-04 12:26:22.039 EcoverdFira[3693:c07] Ordered array: (
  "1 = off",
  "2 = on",
  "3 = on",
  "10 = off"
)
Run Code Online (Sandbox Code Playgroud)

有一个很好的文章上NSSortedDescriptor位置.

  • 这如何标记为正确答案?这甚至不是排序一个字典它只是排序一个数组! (6认同)