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];

この前の質問には、他にもいくつかの選択肢が あります。NSArrayを降順で並べ替える

于 2012-06-24T17:07:47.967 に答える
13

これは、比較ブロックを使用する多くの方法の 1 つです。このコード スニペットは、並べ替えたい数値を含む配列に便利です。昇順の場合:

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 に答える