Это должно дать вам представление о том, как это можно сделать с помощью блоков NSComparator:
[array sortUsingComparator:(NSComparator)^(id obj1, id obj2){
double firstValue = [[obj1 objectForKey:@"someKey"] doubleValue];
double secondValue = [[obj2 objectForKey:@"someKey"] doubleValue];
double valueDiff = firstValue - secondValue;
return (valueDiff == 0) ? NSOrderedSame : (valueDiff < 0) ? NSOrderedAscending : NSOrderedDescending;
}];
obj1
и obj2
являются указателями id на пару объектов словаря в вашем массиве.
Что бы вы ни делали в блоке NSComparator, решать только вам. Пока вы возвращаете NSOrderedSame
, NSOrderedAscending
или NSOrderedDescending
.
Как правило, вам лучше использовать реальный числовой тип данных (а-ля [NSNumber numberWith...:x]
) для хранения таких значений с плавающей запятой, чем строку.