Сортировать NSArray на основе свойства struct - PullRequest
1 голос
/ 04 августа 2011

У меня есть NSArray объектов.

Каждый объект имеет свойство struct LOCATION, в котором хранятся int x и int y.

LOCATION представляет местоположение объекта на доске 10x10.

Я бы хотел отсортировать NSArray объектов, начиная с верхнего левого (0,0) местоположения до нижнего правого (9, 9) местоположения, сортируя каждый объект в каждой строке первым

Какой самый простой способ сделать это?

1 Ответ

4 голосов
/ 04 августа 2011

У вас есть несколько вариантов, все они перечислены в разделе «Сортировка» в NSArray Class Reference .Я рекомендую вам добавить метод сравнения к классу, хранящемуся в массиве (назовите его compareTo: или что-то подобное), и используйте sortedArrayUsingSelector:.Код будет выглядеть примерно так:

// In MyObject.m
- (NSComparisonResult)compareTo:(MyObject *)other {
  if (self.location.y < other.location.y && self.location.x < other.location.x) {
    return NSOrderedAscending;
  } else if (self.location.y == other.location.y && self.location.x == other.location.x) {
    return NSOrderedSame;
  } else {
    return NSOrderedDescending;
  }
}

// In some .m file.
NSArray *sortedArray = [objects sortedArrayUsingSelector:@selector(compareTo:)];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...