Как сортировать либо по расстоянию в float, либо по цене, которая является целым числом?

Я разрешаю пользователям сортировать по цене (int) или по расстоянию (float).

У меня есть NSMutableArray объектов NSdictionary, которые хранят данные следующим образом:

({"asking_price" = 588832;
 distance = "2.0250673476224";
 id = 510cc41cc7e24c6c6d000000;
 "number_of_bathrooms" = 2; )}

моя функция сортировки выглядит следующим образом:

+(void) sort:(NSMutableArray *)classifieds:(NSString *)key:(Boolean)isAscending
{

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:key ascending:isAscending];
    [classifieds sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
}

Мой вопрос заключается в том, что расстояние - это строка в словаре, а цена - это целое число, как я могу изменить свою функцию, чтобы фактически выполнять ее сортировку в числах с плавающей запятой, когда я передаю ключ "расстояние" и в целые числа, когда я передаю ключ " запрашиваемая цена"

заранее спасибо


person kratos    schedule 03.02.2013    source источник
comment
Есть ли способ изменить структуру данных (я предполагаю, что это анализируется веб-службой), чтобы оба типа хранились как числа?   -  person jrturton    schedule 03.02.2013


Ответы (1)


Вероятно, это невозможно, поскольку функция, которой вы не управляете, не знает, как преобразовать NSString в примитивный тип данных. У вас почти осталось 3 варианта:

1) Придумайте свой собственный алгоритм сортировки (не слишком сложно с гуглом)

2) Изменить расстояние на int/float

3) Создайте подкласс NSSortDescriptor и переопределите метод сортировки (почти тот же результат, что и при первом выборе, за исключением того, что код, который вы используете для этого, можно использовать повторно).

person Alex    schedule 03.02.2013