猿问

我现在的做法是遍历数组然后排序的办法,感觉这样好麻烦,还有其他方式吗?

我有这样一个数组:

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"}];


九州编程
浏览 118回答 2
2回答

30秒到达战场

NSArray *array = [NSArray array];     [array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2){         NSNumber index1 = [obj1 valueForKey:@"index"];         NSNumber index2 = [obj2 valueForKey:@"index"];        return [index1 compare:index2];     }];就是这样了。

慕尼黑5688855

Compare methodEither 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]; }];
随时随地看视频慕课网APP

相关分类

iOS
我要回答