2012-06-26 2 views
0

Я немного проблема с сортировкой сущностей. Например, на 13 мил придет первый, а второй - на 2 мили. Вот мой код:Дистанционная сортировка Проблема

NSArray *sortedArray; 
     sortedArray = [objects sortedArrayUsingComparator:^(id a, id b) { 
      NSString * first= [(GooglePlacesObject*)a distanceInMilesString]; 
      NSString * second = [(GooglePlacesObject*)b distanceInMilesString]; 
      return [first compare:second]; 
     } 
     ]; 

     for (GooglePlacesObject * place in sortedArray) { 
      Model * model = [Model fetchFromGooglePlacesObject:place]; 
      [self.gFoundModels addObject:model]; 


     } 
    } 

Любая помощь будет замечательной.

+0

Так что проблема с кодом? Какой результат, и каков желаемый результат? – timos

+0

Является ли 'GooglePlacesObject' настраиваемым классом? Можем ли мы увидеть его реализацию? –

ответ

0

Кажется, вы сортируете строки, поэтому на первом месте 13, потому что «13» меньше, чем «2» при сравнении строк в компараторе по умолчанию.

0

Насколько я могу судить, вы не должны сравнивать строки, а вместо этого конвертировать их в поплавки и возвращать, для которых больше.

EDIT:

В моем понимании, это что-то вроде этого

NSArray *sortedArray; 
sortedArray = [objects sortedArrayUsingComparator:^(id a,id b) 
{ 
    float first=[[(GooglePlacesObject*)a distanceInMilesString] floatValue]; 
    float second=[[(GooglePlacesObject*)b distanceInMilesString] floatValue]; 
    return first>second; 
}]; 
+0

У вас есть образец? – user1128481

+0

отредактирован с кодом – teh1

Смежные вопросы