我有一个简单的 NSArray
,包含 NSNumber
。
我按照这种方式对数组进行升序排序:
NSSortDescriptor *lowestToHighest = [NSSortDescriptor sortDescriptorWithKey:@"self" ascending:YES];
[_scores sortUsingDescriptors:[NSArray arrayWithObject:lowestToHighest]];
我的问题是,我希望包含 0
的 NSNumber
位于结尾而不是开头。这是我可能需要排序的数组类型(包含一些空的 NSNumber
只是为了示例):
0
25
12
0
8
0
我的代码当然是这样对数组进行排序的:
0
0
0
8
12
25
我想要的是:
8
12
25
0
0
0
当然,我可以通过删除带有 0
的行并在末尾添加它们来手动重新排序,但我正在寻找可能的最干净的解决方案。
最佳答案
使用 comparator 对数组进行排序.
NSArray *sortedArray = [array sortedArrayUsingComparator: ^(id obj1, id obj2) {
if ([obj1 integerValue] == 0 && [obj2 integerValue] == 0)
{
return (NSComparisonResult)NSOrderedSame;
}
if ([obj1 integerValue] == 0)
{
return (NSComparisonResult)NSOrderedDescending;
}
if ([obj2 integerValue] == 0)
{
return (NSComparisonResult)NSOrderedAscending;
}
if ([obj1 integerValue] > [obj2 integerValue])
{
return (NSComparisonResult)NSOrderedDescending;
}
if ([obj1 integerValue] < [obj2 integerValue])
{
return (NSComparisonResult)NSOrderedAscending;
}
return (NSComparisonResult)NSOrderedSame;
}];
关于ios - 按升序对 NSArray 的数字进行排序,但在末尾发送零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16338443/