两个NSMutableArrays按照第一个对象排序

时间:2013-01-16 22:38:00

标签: ios objective-c ios6

我有两个带有NSString和NSNumber对象的NSMutableArrays,更具体:

NSMutableArray * points; // NSNumber objects
NSMutableArray * players; //NSString objects

我需要根据点的对象对它们进行排序。我尝试了这个Order two NSMutableArrays based on one,但由于NSArray没有帮助。我需要在NSMutableArrays中执行此操作。我使用此

对点进行排序
NSSortDescriptor *highestToLowest = [NSSortDescriptor sortDescriptorWithKey:@"self" ascending:NO];
[points sortUsingDescriptors:[NSArray arrayWithObject:highestToLowest]];

1 个答案:

答案 0 :(得分:3)

我认为你应该引入一个播放器类

@interface Player : NSObject
@property(strong) NSString *name;
@property(strong) NSNumber *points;
@end

不是将信息保存在单独的数组中,而是现在每个玩家都有一个Player对象,并将该点保持在内部。现在把所有玩家放在一个数组中,你可以轻松排序。

[players sortUsingComparator: ^(Player *p1, Player *p2){
    if (p1.points < p2.points)
        return NSOrderedAscending;   
    else if(p1.points > p2.points)
        return NSOrderedDescending 
    return NSOrderedSame;
}];