2011-09-30 74 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

请添加一些代码与您的答案。 –