在NSArray中sorting数字?
这是把我推上了墙,我不能拼凑在一起如何做到这一点。
我从plist中获取我的数组,这个数组充满了数字(在plist中设置)。 现在我需要做的就是对它们进行sorting,使它们下降,但是我不能解决它。
希望有人能帮忙,谢谢。
试试这个代码?
NSArray *array = /* loaded from file */; array = [array sortedArrayUsingSelector: @selector(compare:)];
以下将按升序对数字进行sorting,然后反转结果以降序给出数字:
NSArray *sorted = [[[array sortedArrayUsingSelector:@selector(compare:)] reverseObjectEnumerator] allObjects];
这个前面的问题有一些其他的select: 按降序排列一个NSArray
这是使用比较块的许多方法之一。 这个代码片段适用于任何你想sorting的数组。 升序:
AscendingArray = [UnsortArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { if ([obj1 integerValue] > [obj2 integerValue]) { return (NSComparisonResult)NSOrderedDescending; } if ([obj1 integerValue] < [obj2 integerValue]) { return (NSComparisonResult)NSOrderedAscending; } return (NSComparisonResult)NSOrderedSame; }];
对于降序:
DescendingArray = [UnsortArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { if ([obj1 integerValue] > [obj2 integerValue]) { return (NSComparisonResult)NSOrderedAscending; } if ([obj1 integerValue] < [obj2 integerValue]) { return (NSComparisonResult)NSOrderedDescending; } return (NSComparisonResult)NSOrderedSame; }];
它为我工作:
NSSortDescriptor *sortIdClient = [NSSortDescriptor sortDescriptorWithKey:@"campaignValue" ascending:NO comparator: ^(id obj1, id obj2){ return [obj1 compare:obj2 options:NSNumericSearch]; }]; NSArray *sortDescriptors = @[sortIdClient]; NSArray *arrTemp = [self.allCampaignsList sortedArrayUsingDescriptors:sortDescriptors];
这将解决问题:
NSArray *array = /* loaded from file */; array = [array sortedArrayUsingSelector: @selector(compare:)];