我有一个NSFetchedResultsController
从核心数据结构中获取数据的专辑列表。它目前是由艺术家排序的,所以所有的 A、B 等。我想添加一个索引,以便用户可以快速跳转到每个字母,我正在使用下面的代码来做这件事。问题是部分标题现在也是“A”、“B”、“C”等,这意味着我已经按照字母顺序丢失了部分标题,每个艺术家都在上面(“Adele”、“America” ”、“披头士乐队”等)
我希望索引使用字母 A 到 Z,但部分标题按字母顺序显示艺术家姓名。按下索引中的一个字母会跳转到第一个带有该字母的艺术家。我怎样才能做到这一点(索引中的字母字符,但部分标题的属性不同)?
编辑:如果我将 my 设置sectionNameKeyPath
为我的author
字段,则 AZ 索引可见,但字母不会与名称同步,例如,如果我点击 S,它会将我带到以 AL 开头的艺术家,或者点击 G 将我带到AB。我不太清楚为什么会这样,也许部分索引搞砸了?
这是我正在使用的代码:
在我的NSManagedObject
子类中:
- (NSString *) firstLetter
{
[self willAccessValueForKey: @"firstLetter"];
NSString *firstLetter = [[[self author] substringToIndex: 1] uppercaseString];
[self didAccessValueForKey: @"firstLetter"];
return firstLetter;
}
在我的视图控制器中,创建 FRC:
NSFetchedResultsController *byAuthorFRC = [[NSFetchedResultsController alloc] initWithFetchRequest: _fetchRequest
managedObjectContext: [[CDManager sharedManager] managedObjectContext]
sectionNameKeyPath: @"firstLetter"
cacheName: nil];
这是我的sectionIndexTitlesForTableView:
方法:
- (NSArray *) sectionIndexTitlesForTableView: (UITableView *) tableView
{
return [self.fetchedResultsController sectionIndexTitles];
}