Я пытаюсь отсортировать NSArray в произвольном алфавитном порядке. Дело в том, что у меня есть массив со строками, содержащими состояния объектов.
Доступные состояния: entered, process, ready, done
.
Теперь, когда я сортирую их нормально (в алфавитном порядке), порядок будет неверным (сделано, введено, обработано, готово).
Я попробовал следующий код, чтобы заказать его правильно:
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"state" ascending:YES comparator:^(id obj1, id obj2) {
if ([obj1 isEqualToString:@"entered"] && [obj2 isEqualToString:@"process"]) {
return (NSComparisonResult) NSOrderedAscending;
}
else if ([obj1 isEqualToString:@"process"] && [obj2 isEqualToString:@"entered"]) {
return (NSComparisonResult) NSOrderedDescending;
}
else if ([obj1 isEqualToString:@"process"] && [obj2 isEqualToString:@"ready"]) {
return (NSComparisonResult) NSOrderedAscending;
}
else if ([obj1 isEqualToString:@"ready"] && [obj2 isEqualToString:@"process"]) {
return (NSComparisonResult) NSOrderedDescending;
}
else if ([obj1 isEqualToString:@"ready"] && [obj2 isEqualToString:@"done"]) {
return (NSComparisonResult) NSOrderedAscending;
}
else if ([obj1 isEqualToString:@"done"] && [obj2 isEqualToString:@"ready"]) {
return (NSComparisonResult) NSOrderedDescending;
}
else {
return (NSComparisonResult) NSOrderedSame;
}
}];
Я также пытался использовать только первые буквы слов, но это тоже не сработало.
Когда я использую этот компаратор, он просто не заказывает соответственно. массив сохраняет «старый» порядок.
Что я обедаю неправильно? Разве я не правильно понял компараторы сортировки?
Спасибо за помощь, с уважением, Джулиан