tof*_*ier 4 core-data uitableview nsfetchedresultscontroller ios
如何索引a NSFetchedResultsController以便我可以在tableview上实现AZ索引.
我在初始化程序中看到我能做到,sectionNameKeyPath但这只是在自己的部分中放置了唯一的对象.
这就是我对我的看法 NSFetchedResultsController
- (NSFetchedResultsController *)fetchedResultsController
{
if (__fetchedResultsController != nil) {
return __fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Customer" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
[fetchRequest setFetchBatchSize:20];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"name" cacheName:@"Customer"];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;
return __fetchedResultsController;
}
Run Code Online (Sandbox Code Playgroud)
Mat*_*uch 13
这样实现sectionIndexTitlesForTableView::
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
return [self.fetchedResultsController sectionIndexTitles];
}
Run Code Online (Sandbox Code Playgroud)
这将为您提供tableView右侧的那些索引.
如果您希望您的部分具有A,B,C,D等名称,则必须实现一个返回对象的第一个字母的方法.
这样的事情:
- (NSString *)firstLetter {
[self willAccessValueForKey:@"firstLetter"];
NSString *firstLetter = [[[self name] substringToIndex:1] uppercaseString];
[self didAccessValueForKey:@"firstLetter"];
return firstLetter;
}
Run Code Online (Sandbox Code Playgroud)
这将进入您的coredata实体的自定义子类.
然后添加一个名为firstLetter您的核心数据实体的瞬态属性,并替换NSFetchedResultsController init中的sectionNameKeyPathfirstLetter
| 归档时间: |
|
| 查看次数: |
2621 次 |
| 最近记录: |