我正在使用以下代码按书名字段进行排序,并在UITableViewController中将书名的第一个大写字母显示为部分名称。
该代码可以完美地在除泰语之外的所有语言中运行。我在互联网上看到有一些特殊的非美国字符导致此类问题(例如Æ),但我尚未找到任何解决方案。
参见gschandler对The fetched object at index [i] has an out of order section name 'å的回应
FRC的代码是
NSFetchedResultsController *aFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:managedObjectContext
sectionNameKeyPath:@"titleFirstLetter"
cacheName:nil];
firstLetter的代码是:
- (NSString *)titleFirstLetter {
// support UTF-16:
NSString* val = [self.title substringWithRange:[self.title rangeOfComposedCharacterSequenceAtIndex:0]];
return [val uppercaseString];
}
有什么建议?
最佳答案
您必须添加一个排序描述符,该描述符对sectionNameKeyPath所做的相同属性进行排序。
NSSortDescriptor *sort = [[NSSortDescriptor alloc]initWithKey:@"titleFirstLetter" ascending:NO];
[fetchRequest setSortDescriptors:[NSArray arrayWithObjects:sort,nil]];
[fetchRequest setFetchBatchSize:20];
关于ios - 核心数据错误: 'Objects must be sorted by section name' for specific languages such as Thai,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23362199/