これを行う方法をまとめることはできません。
plist から配列をフェッチします。この配列は (plist で設定されているように) 数字でいっぱいです。今私がしなければならないことは、それらを並べ替えて降順にすることですが、解決できません。
これを行う方法をまとめることはできません。
plist から配列をフェッチします。この配列は (plist で設定されているように) 数字でいっぱいです。今私がしなければならないことは、それらを並べ替えて降順にすることですが、解決できません。
このコードを試してみませんか?
NSArray *array = /* loaded from file */;
array = [array sortedArrayUsingSelector: @selector(compare:)];
以下は、番号を昇順で並べ替えてから、結果を逆にして番号を降順で表示します。
NSArray *sorted = [[[array sortedArrayUsingSelector:@selector(compare:)] reverseObjectEnumerator] allObjects];
この前の質問には、他にもいくつかの選択肢が あります。NSArrayを降順で並べ替える
これは、比較ブロックを使用する多くの方法の 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;
}];
それは私のために働く:
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:)];