您好,匿名用户
随意问技术百科期待您的加入

如何给一个字典的数组排序

0 投票

我有这样一个数组:

NSArray *arr = @[@{@"index" : @"3", @"key" : @"value"},
                 @{@"index" : @"4", @"key" : @"value"},
                 @{@"index" : @"1", @"key" : @"value"},
                 @{@"index" : @"2", @"key" : @"value"}];

要重新按照字典里的index值排序变成这样:

NSArray *arr = @[@{@"index" : @"1", @"key" : @"value"},
                 @{@"index" : @"2", @"key" : @"value"},
                 @{@"index" : @"3", @"key" : @"value"},
                 @{@"index" : @"4", @"key" : @"value"}];

我现在的做法是遍历数组然后排序的办法。有没有优雅一点的做法。。感觉这样好麻烦

用户头像 提问 2012年 12月1日 @ Galio 上等兵 (289 威望)
分享到:

1个回答

0 投票
 
最佳答案

Compare method

Either you implement a compare-method for your object:

- (NSComparisonResult)compare:(Person *)otherObject {
    return [self.birthDate compare:otherObject.birthDate];
}
NSArray *sortedArray;
sortedArray = [drinkDetails sortedArrayUsingSelector:@selector(compare:)];

NSSortDescriptor (better)
or usually even better: (The default sorting selector of NSSortDescriptor is compare:)

NSSortDescriptor *sortDescriptor;
sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"birthDate"
                                              ascending:YES] autorelease];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *sortedArray;
sortedArray = [drinkDetails sortedArrayUsingDescriptors:sortDescriptors];

Blocks (shiny!)

There's also the possibility of sorting with a block since 10.6:

NSArray *sortedArray;
sortedArray = [drinkDetails sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
    NSDate *first = [(Person*)a birthDate];
    NSDate *second = [(Person*)b birthDate];
    return [first compare:second];
}];
用户头像 回复 2012年 12月1日 @ Emiya Shirou 上等兵 (438 威望)
选中 2012年 12月1日 @Galio
提一个问题:

相关问题

+2 投票
1 回复 50 阅读
用户头像 提问 2012年 12月31日 @ Saber 中士 (1,234 威望)
0 投票
1 回复 40 阅读
用户头像 提问 2012年 12月1日 @ Morgana 上等兵 (251 威望)
0 投票
1 回复 53 阅读
用户头像 提问 2012年 12月1日 @ hacker 上等兵 (362 威望)
0 投票
1 回复 4 阅读
0 投票
1 回复 72 阅读
用户头像 提问 2012年 12月1日 @ Pisces 上等兵 (182 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...