2013-04-16 92 views
1

我有这样的数组:排序阵列问题

( “8461.86”, “8468.22”, “8468.22”, “8162.59”, “8164.50”, “7280.59”)

我试图解决这个数组decendingly按如下:

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

,但没有得到适当的排序阵列。

+1

哪里是关于Xcode的问题? – 2013-04-16 06:25:15

+1

您提供的排序是按升序排序。这是默认设置。 – rmaddy

回答

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" 

+0

感谢您的回复!但我的价值观可以重复,即相同的价值可以重复多次。 –

+0

感谢您的回复!但是,当我给阵列等:的NSMutableArray * yourTempArray = [[NSMutableArray里的alloc] initWithObjects:@ “8459.93”,@ “8466.28”,@ “8466.28”,@ “8160.70”,@ “8162.61”,@ “7278.56”,零] ; **这是不正确的排序** –

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); 
+0

感谢您的回复!但我没有得到排序的数组。 –

+0

@ user2243212,你是否试过这个代码,它肯定会按降序对它排序 – NAZIK

+0

是的,我试过但没有发生 –

2

要按降序顺序,你可以 只是切换firstObject和secondObject在你的代码:

sortedArray = [arr_distance sortedArrayUsingComparator:^(id firstObject, id secondObject) { 
    return [((NSString *)secondObject) compare:((NSString *)firstObject) options:NSNumericSearch]; 
}]; 
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其排序

+0

感谢您的回复!但没有得到正确排序的数组。我有距离阵列像:(“8459.93”, “8466.28”, “8466.28”, “8160.70”, “8162.61”, “7 278.56”) –

+0

@ user2243212你能告诉我输出该代码? –

+0

对不起,你是对的。由于我的错误,我没有得到适当的数组。我喜欢放弃投票,但由于声誉低下,我无法做到这一点。再次抱歉... –