CoreData排序将单直引号与单弯引号视为相同,如何实现区分排序?
问题:CoreData排序无法区分单直引号与单弯引号导致分组崩溃
我有一个CoreData数据库,正在从中获取Animal列表并按namesortable字段排序。但目前单直引号'和单弯引号‘开头的namesortable会被视为相同,排序结果示例如下:
'affirm' ‘california’ 'grasshopper' 'no doubt" ‘relentless’ ...
这本身不算大问题,但我使用NSFetchedResultsController按-namefirstletter进行分组时,分组顺序会在两种引号间反复切换,直接引发崩溃。
我知道可以修改-namefirstletter方法,将弯引号替换为直引号来解决问题,但不想持续添加需要替换的特殊字符,希望CoreData能直接区分这两种引号进行排序。
相关代码如下:
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];
内容的提问来源于stack exchange,提问作者Kenny Wyland
相关产品推荐
相关产品推荐

