使用大于10的数字对NSMutableArray进行排序

时间:2014-06-09 09:29:49

标签: ios objective-c sorting nsmutablearray

我的应用有一个高分列表,其中包含玩家所做的所有分数。我为此使用了NSMutableArray,我在UITableView中按降序排序并显示。

[arrayWithScores sortUsingSelector:@selector(compare:)];
reversed = [[arrayWithScores reverseObjectEnumerator] allObjects];

这样可行,但是当玩家获得大于10的分数时,阵列不再按照我想要的方式排序。

例如,它的作用:

7, 5, 4, ... 10,

它将10放在最后,因为它从1开始,这显然是该数组中的最低分数。但我希望它把它作为10而不是把它放在开头。

在这种情况下我想要的是什么:

10, 7, 5, 4, ...

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

您需要将它们存储为数字(NSNumber个对象),因为这是此数据最合适的类型。在演示期间,您可以将它们转换为字符串:

NSMutableArray *arrayWithScores = ...;

// Insert new score
NSNumber score = @(10);
[arrayWithScores insertObject:score];

// Sort
[arrayWithScores sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
    return [(NSNumber *)obj1 compare:(NSNumber *)obj2] == NSOrderedAscending;
}];