9

我无法拼凑如何做到这一点。

我从 plist 中获取我的数组,这个数组充满了数字(在 plist 中设置)。现在我需要做的就是对它们进行排序,使它们下降,但我无法解决。

4

5 回答 5

43

试试这个代码?

 NSArray *array = /* loaded from file */;
 array = [array sortedArrayUsingSelector: @selector(compare:)];
于 2012-06-24T16:53:21.420 回答
15

以下将按升序对数字进行排序,然后将结果反转以按降序给出数字:

NSArray *sorted = [[[array sortedArrayUsingSelector:@selector(compare:)] reverseObjectEnumerator] allObjects];

这个先前的问题有一些其他的选择: Sort an NSArray in Descending Order

于 2012-06-24T17:07:47.967 回答
13

这是使用比较块的众多方法之一。此代码片段对于任何包含要排序的数字的数组都很方便。对于升序:

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;
  }];
于 2015-03-04T17:19:12.267 回答
5

它对我有用:

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];
于 2014-11-27T03:59:03.827 回答
0

这将解决问题:

 NSArray *array = /* loaded from file */;
 array = [array sortedArrayUsingSelector: @selector(compare:)];
于 2016-08-09T12:12:51.197 回答