числовая сортировка с NSSortDescriptor для NSFetchedResultsController - PullRequest
0 голосов
/ 14 января 2011

Я пытаюсь численно отсортировать данные, отображаемые в UITableView.

До этого я использовал такой дескриптор сортировки:

sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(caseInsensitiveCompare:)];

Теперь я хотел бы использовать блок дляотсортировать это численно следующим образом:

sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES comparator:^NSComparisonResult(id obj1, id obj2) {
    return [((NSString *)obj1) compare:(NSString *)obj2 options:NSCaseInsensitiveSearch | NSNumericSearch];
}];

, но сортирует данные по неосторожности, вызывая конфликт с именами разделов в NSFetchedResultsController.Поэтому я попытался имитировать старую сортировку с помощью блока сравнения - просто чтобы быть уверенным, что проблема не связана с числовым сравнением.Проблема в том, что эти строки:

sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES comparator:^NSComparisonResult(id obj1, id obj2) {
    return [((NSString *)obj1) caseInsensitiveCompare:(NSString *)obj2];
}];

также вызывают ту же ошибку, и я не понимаю, почему они не будут сортировать данные так же, как первый метод ...

Есть идеи?

1 Ответ

1 голос
/ 14 января 2011

Я не знаю, будет ли это работать в запросе на выборку, но вы можете попробовать отсортировать по @selector(localizedStandardCompare:).

...