NSFetchResultsController를 만들 때 가져 오기 요청에서 books 테이블의 엔티티 이름을 사용하십시오.
NSFetchedResultsController *aController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"typePropertyName" cacheName:nil];
typePropertyName 그것이 될 것 섹션의 이름으로 책에서 얻을 수있는 경로가 될 것입니다
그런 다음이를 사용하여 ....
그냥있을 수 @ "유형 이름" 북 테이블에 직접 가지고 있거나 type
이라는 테이블에 대한 관계가 있고 그 테이블에 name
이라는 필드가 있다면 @ "type.name"이 될 수 있습니다. 에 ...
전체 코드
#pragma mark - fetched results controller
- (NSFetchedResultsController*)fetchedResultsController
{
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Book"];
[request setFetchBatchSize:20];
NSSortDescriptor *sdType = [[NSSortDescriptor alloc] initWithKey:@"type.name" ascending:YES];
NSSortDescriptor *sdName = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
[request setSortDescriptors:@[sdType, sdName]];
NSFetchedResultsController *aController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"type.name" cacheName:nil];
aController.delegate = self;
self.fetchedResultsController = aController;
NSError *error = nil;
if (![self.fetchedResultsController performFetch:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return _fetchedResultsController;
}
는 그 다음 tableViewController에서 당신이 할 수 있습니다 ... 같은 것입니다 ...
섹션으로 NSFetchedResultsController를 만듭니다 어쨌든
,
- (NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
id <NSFetchedResultsSectionInfo> sectionInfo = [self.fetchedResultsController sections][section];
return [sectionInfo name]
}
그러면 섹션 이름이 각 섹션의 헤더로 사용됩니다.
이것은 섹션 이름 키 패스가 작동하는 곳입니다. 과학, 수학 및 다른 것들을 보유하고있는 과목이라는 속성이 있다면 fetchedresultscontroller performFetch : method sectionNameKeyPath :를 주제로 사용하고 다른 모든 속성은 apple 템플리트에서 제공하는 것과 동일하게 amost가됩니다. – Sandeep