Можно ли отсортировать коллекцию NSArray UIView на основе их тега? - PullRequest
3 голосов
/ 10 апреля 2010

Я видел примеры чего-то вроде

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

Я ищу пример, в котором хранится коллекция UIViews, и я хотел бы отсортировать их в порядке возрастания или убывания на основе тегов, которые я предполагаю программно при создании нового UIView.

Если бы кто-то мог предоставить пример кода или инструкции, которые были бы фантастическими

Ответы [ 2 ]

13 голосов
/ 10 апреля 2010

NSArray предоставляет ряд методов для сортировки массива (все они перечислены под заголовком «Сортировка» в документации NSArray). Вы можете определить функцию, метод или дескриптор сортировки для сравнения представлений на основе их тегов для сортировки. Например, вот реализация с использованием NSSortDescriptor:

NSSortDescriptor *ascendingSort = [[NSSortDescriptor alloc] initWithKey:@"tag" ascending:YES];
NSSortDescriptor *descendingSort = [[NSSortDescriptor alloc] initWithKey:@"tag" ascending:NO];
NSArray *sortedArray = [someArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:ascendingSort]];
2 голосов
/ 10 апреля 2010
- (NSComparisonResult)compareTags:(UIView *)view {
    if ([self tag] == [view tag]) return NSOrderedSame;
    if ([self tag] > [view tag]) return NSOrderedDescending;
    return NSOrderedAscending;
}

Предполагая, что я получил правильное упорядочение, то есть методы для этого использования должны быть в UIView (легко сделать с категорией). Есть несколько других способов получить тот же результат, см. Документы Сортировка массивов .

...