我的应用有一个高分列表,其中包含玩家所做的所有分数。我为此使用了NSMutableArray
,我在UITableView
中按降序排序并显示。
[arrayWithScores sortUsingSelector:@selector(compare:)];
reversed = [[arrayWithScores reverseObjectEnumerator] allObjects];
这样可行,但是当玩家获得大于10的分数时,阵列不再按照我想要的方式排序。
例如,它的作用:
7, 5, 4, ... 10,
它将10放在最后,因为它从1开始,这显然是该数组中的最低分数。但我希望它把它作为10而不是把它放在开头。
在这种情况下我想要的是什么:
10, 7, 5, 4, ...
我怎样才能做到这一点?
答案 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;
}];