How Do I sort an NSMutable Array with NSNumbers in it?

后端 未结 7 2051
星月不相逢
星月不相逢 2020-12-05 02:06

I\'m trying to make a high score table, and suck at arrays in objective c (actually, in general objective c is challenging for me), so I can\'t figure out how to sort. I\'m

7条回答
  •  抹茶落季
    2020-12-05 02:14

    [highscores sortUsingSelector:@selector(compare:)];

    Should work if they're definitely all NSNumbers.

    (Adding an object is:

    [highscores addObject:score];

    )

    If you want to sort descending (highest-first):

    10.6/iOS 4:

    [highscores sortUsingComparator:^(id obj1, id obj2) {
        if (obj1 > obj2)
            return NSOrderedAscending;
        else if (obj1 < obj2)
            return NSOrderedDescending;
    
        return NSOrderedSame;
    }];
    

    Otherwise you can define a category method, e.g.:

    @interface NSNumber (CustomSorting)
    
    - (NSComparisonResult)reverseCompare:(NSNumber *)otherNumber;
    
    @end
    
    @implementation NSMutableArray (CustomSorting)
    
    - (NSComparisonResult)reverseCompare:(NSNumber *)otherNumber {
        return [otherNumber compare:self];
    }
    
    @end
    

    And call it:

    [highscores sortUsingSelector:@selector(reverseCompare:)];

提交回复
热议问题