我有两个带有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]];
答案 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;
}];