我正在使用以下代码按书名字段进行排序,并在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/

10-09 02:19