1

私は次のような配列を持っています:

( "8461.86","8468.22","8468.22","8162.59","8164.50","7280.59" )

次のように、この配列を降順でソートしようとします。

sortedArray = [arr_distance sortedArrayUsingComparator:^(id firstObject, id secondObject) {
    return [((NSString *)firstObject) compare:((NSString *)secondObject) options:NSNumericSearch];
}];

しかし、次のような配列を取得しました:

( "7280.59","8162.59","8164.50","8461.86","8468.22","8468.22" )

なぜこれが起こるのですか?

私も好きで試します

return [firstObject compare:secondObject options:NSNumericSearch];

しかし、適切なソートされた配列が得られません。

4

4 に答える 4

2
NSSortDescriptor *desc = [[NSSortDescriptor alloc]initWithKey:@"" ascending:NO];
NSMutableArray *yourTempArray = [[NSMutableArray alloc]initWithObjects:@"8459.93",@"8466.28",@"8466.28",@"8160.70",@"8162.61",@"7278.56", nil];
[yourTempArray sortUsingDescriptors:[NSArray arrayWithObject:desc]];
NSLog(@"sotedAr == %@",yourTempArray);

出力:

sotedAr == (
"8466.28",
"8466.28",
"8459.93",
"8162.61",
"8160.70",
"7278.56"

)

于 2013-04-16T06:31:53.103 に答える
1

次のコードを試してください:-

NSSortDescriptor *frequencyDescriptor = [NSSortDescriptor sortDescriptorWithKey:@""
                                                               ascending:NO
                                                              comparator:^(id obj1, id obj2) {
                                                                  return [obj1 compare:obj2 options:NSNumericSearch];
                                                              }];
NSEnumerator * enumerator = [arr_distance objectEnumerator];
NSArray * descriptors = [NSArray arrayWithObjects:frequencyDescriptor, nil];
NSArray * sortedArray =   [arr_distance sortedArrayUsingDescriptors:descriptors];
enumerator = [sortedArray objectEnumerator];
NSLog(@"sortedArray = %@",sortedArray);

// ソート済みの sortedArray を使用

于 2013-04-16T06:41:23.353 に答える
1

以下のコードは、配列を降順でソートするのに役立ちます

NSArray *arr = [NSArray arrayWithObjects:@"8459.93",@"8466.28",@"8466.28",@"8160.70",@"8162.61",@"7278.56", nil];
NSMutableArray *yourTempArray = [[NSMutableArray alloc]init];
[yourTempArray addObjectsFromArray:arr];
NSLog(@"before sorting = %@",yourTempArray);
NSSortDescriptor* sort = [NSSortDescriptor sortDescriptorWithKey: @"self" ascending: NO];

[yourTempArray sortUsingDescriptors:[NSArray arrayWithObject:sort]];
NSLog(@"After sorting = %@",yourTempArray);
于 2013-04-16T06:29:01.207 に答える