Как использовать NSComparator? - PullRequest
9 голосов
/ 21 февраля 2011

Я хотел бы знать, возможен ли приведенный ниже вопрос с использованием NSComparator или нет?

У меня есть два массива;оба держат модели данных.У меня есть свойство с именем rank в модели данных.Теперь я хочу сравнить оба массива и узнать, содержит ли один из них модели данных с более высоким рейтингом.Если да, я хотел бы получить NSComparisonResult = NSOrderedAscending.

Кстати, здесь я использую другой подход: это «сумма рангов каждой модели данных в массиве, и если сумма больше, чем общий ранг данных второго массива».

1 Ответ

27 голосов
/ 24 февраля 2011

Да, это будет выглядеть примерно так:

NSArray *someArray = /* however you get an array */    
NSArray *sortedArray = [someArray sortedArrayUsingComparator:^(id obj1, id obj2) {
  NSNumber *rank1 = [obj1 valueForKeyPath:@"@sum.rank"];
  NSNumber *rank2 = [obj2 valueForKeyPath:@"@sum.rank"];
  return (NSComparisonResult)[rank1 compare:rank2];
}];

(обновлено, чтобы показать фактически с помощью компаратора)

...