gpt4 book ai didi

ios - 按升序对 NSArray 的数字进行排序,但在末尾发送零

转载 作者:行者123 更新时间:2023-11-28 17:58:05 28 4
gpt4 key购买 nike

我有一个简单的 NSArray,包含 NSNumber

我按照这种方式对数组进行升序排序:

NSSortDescriptor *lowestToHighest = [NSSortDescriptor sortDescriptorWithKey:@"self" ascending:YES];
[_scores sortUsingDescriptors:[NSArray arrayWithObject:lowestToHighest]];

我的问题是,我希望包含 0NSNumber 位于结尾而不是开头。这是我可能需要排序的数组类型(包含一些空的 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com