NSFetchedResultsController - 乱序部分错误

Adr*_*ana 1 core-data nssortdescriptor nsfetchedresultscontroller

我正在使用排序描述符设置NSFetchedResultsController

sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@”name” ascending:YES selector:@selector(caseInsensitiveCompare:)];
Run Code Online (Sandbox Code Playgroud)

而这一节

aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@”name” cacheName:nil];
Run Code Online (Sandbox Code Playgroud)

然后我也像这样设置表视图部分的委托:

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
    return [self.fetchedController sectionIndexTitles];
}

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {
    return [self.fetchedController sectionForSectionIndexTitle:title atIndex:index];
}
Run Code Online (Sandbox Code Playgroud)

有时候,当我插入对象时,我收到错误"索引X处的获取对象有一个乱序的部分名称'某些东西.对象必须按部分名称排序'";

我正在插入数千行.当错误发生时,它始终具有相同的情况:我有10个对象称为相同的东西,但有些是大写,有些是小写.示例:nameexample,nameExample,nameEXAMPLE,nameexample,nameExample等.

任何想法我为什么会得到错误,我该如何解决这个问题?我之所以不区分大小写的原因是因为我的部分基于第一个字母,如果我没有它不区分大小写,我会得到"a"部分和"A"部分.

Adr*_*ana 6

我认为该部分的顺序与排序的顺序不同,因为虽然我使用相同的属性,但一个不区分大小写,另一个不区分大小写.

解决方案:我在Core Data中添加了另一个属性,其中包含小写的名称,我在该部分中使用此属性并进行排序.这样我就不必调用@selector(caseInsensitiveCompare :)