сортировка изменяемого массива в алфавитном порядке - PullRequest
1 голос
/ 15 сентября 2010

У меня есть массив nsmutable и в этом почти 50 -60 объектах, имеющих разные имена, и могу ли я отсортировать этот массив в алфавитном порядке (Возможно ли это, как?)

Ответы [ 4 ]

14 голосов
/ 15 сентября 2010

Для такой простой сортировки я хотел бы использовать дескрипторы сортировки.

Предположим, у вас есть изменяемый массив объектов, класс которых имеет свойство name NSString:

NSSortDescriptor *sort=[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:NO];
[myArray sortUsingDescriptors:[NSArray arrayWithObject:sort]];
8 голосов
/ 15 сентября 2010

Абсолютно, вы можете использовать sortUsingSelector: для этого:

[myArray sortUsingSelector:@selector(compare:)];

Если в вашем массиве есть пользовательские объекты, вам необходимо реализовать метод сортировки для этих объектов:

@implementation myCustomObject
  ...

  -(NSComparisonResult) compare:(myCustomObject*) other {
      return [self.name compare:other.name];
  }

@end
2 голосов
/ 15 сентября 2010

Подход TechZen работает хорошо, но он будет работать лучше, если вы используете NSSortDescriptor + sortDescriptorWithKey: ascending: selector :, передавая "localizedCompare:" в качестве селектора. Таким образом, сортировка локализуется на языке пользователя, что может иметь большое значение при сравнении строк.

0 голосов
/ 14 сентября 2013
myArray=[myDict keysSortedByValueUsingSelector:@selector(compare:)]; 

Просто работал для меня!

...