Я сортирую и разбиваю табличное представление по первой букве массива строк, как это делает приложение Контакты. Я использую Core Data и NSFetchedResultsController для управления таблицей. Я использую первую букву слова, и если буква не только проблема, то, когда я использую описание сортировки с localizedCaseInsensitiveCompare:, создается впечатление, что список разделов выглядит так: '...' Z '. Я хочу, чтобы знак # был в конце списка, а не в первом (как и в приложении «Контакты», опять же). Есть ли какой-нибудь творческий способ, которым я мог бы достичь этого?
Вот как я создаю NSFetchedResultsController:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
[fetchRequest setFetchBatchSize:100];
NSSortDescriptor *sortDescriptorLetter = [[NSSortDescriptor alloc] initWithKey:@"sectionLetter" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptorLetter, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"sectionLetter" cacheName: nil]; // NOTE: set the cache name to nil for testing ...
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;
NSError *error = nil;
if (![self.fetchedResultsController performFetch:&error])
...