2011-09-30 46 views

回答

9

@Ron's answer是完美的,但我想通過使用比較器塊添加排序。對於這個簡單的情況下,它可能是矯枉過正,但它是非常方便的,當談到關於對象的排序,以幾個屬性

NSArray *myArray =[NSArray arrayWithObjects: [NSNumber numberWithFloat:45.0],[NSNumber numberWithFloat:122.0], [NSNumber numberWithFloat:21.01], [NSNumber numberWithFloat:5.9], nil]; 
NSArray *sortedArray = [myArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { 
    if ([obj1 floatValue] > [obj2 floatValue]) 
     return NSOrderedDescending; 
    else if ([obj1 floatValue] < [obj2 floatValue]) 
     return NSOrderedAscending; 
    return NSOrderedSame; 
}]; 
1

這裏......使用NSSortDescriptor

首先轉換浮點值成NSNumber

NSSortDescriptor *sortDescriptor; 
sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"floats" 
               ascending:YES] autorelease]; 
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor]; 
NSArray *sortedArray; 
sortedArray = [drinkDetails sortedArrayUsingDescriptors:sortDescriptors]; 

希望它能幫助:)

+0

我試過了,但它不能工作。 NSNumber沒有嘗試過,謝謝你的回覆 – iOSdev

+0

你有沒有改變浮點數到NSNumber? – Hisenberg

+1

事實上,這是行不通的。 NSNumber不是符合@「float」的關鍵值編碼。請嘗試@「floatValue」。 – vikingosegundo

9

試試這個它WOR k對我來說

NSArray *array=[[NSArray alloc] initWithObjects:[NSNumber numberWithFloat:12.01],[NSNumber numberWithFloat:13.01],[NSNumber numberWithFloat:10.01],[NSNumber numberWithFloat:2.01],[NSNumber numberWithFloat:1.5],nil]; 
NSArray *sorted = [array sortedArrayUsingSelector:@selector(compare:)]; 
+1

尼斯AnswerRon先生。它的工作... –

0

首先轉換浮點值到的NSNumber>它的工作!謝謝

+0

請添加一些代碼與您的答案。 –