I've got a CoreData database and I'm fetching a list of Animals from it, sorted by a namesortable field. But namesortables that start with ' and with ` are being treated as if they are the same and producing results like this:
'affirm'
‘california’
'grasshopper'
'no doubt"
‘relentless’
...
This wouldn't inherently be a problem, but I'm fetching these with an NSFetchedResultsController which is sectioned by -namefirstletter and it's crashing because the sections are out of order. It thinks the sections are out of order because it keeps switching back and forth between ' and with `.
I know that I could alter the -namefirstletter method to swap smart quotes for single quotes to bludgeon it into working, but I'd rather not have to start creating a longer and longer list of exception characters that I need to swap. I'd prefer to get CoreData to just sort the data without treating ' and with ` as the same.
Any suggestions?
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:Animal.entityname inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
NSArray<NSSortDescriptor *> *sortdescriptors = @[
[NSSortDescriptor sortDescriptorWithKey:Animal.fieldname_namesortable
ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)]
];
[fetchRequest setSortDescriptors:sortdescriptors];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"..."];
NSError *error = nil;
NSArray<Animal*> *animals = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];