0
가져온 결과 컨트롤러가 관리하는 테이블보기가 있습니다. 내가 원하는 것은 사용자가 분할 된 컨트롤을 탭할 때 정렬 순서를 변경하는 것입니다. 이 내가 가져온 결과 컨트롤러를 만드는 방법은 다음과 같습니다새로 고침 fetchedResultsController 데이터
- (NSFetchedResultsController *)frc {
if (_frc != nil) {
return _frc;
}
NSString *sortCase;
switch (self.sortOrder) {
case tableSortServer:
sortCase = [NSString stringWithFormat:@"%@", CD_SORT];
break;
case tableSortDate:
sortCase = [NSString stringWithFormat:@"%@", CD_DATE];
break;
default:
sortCase = [NSString stringWithFormat:@"%@", CD_SORT];
break;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:CD_ENTITY_NAME inManagedObjectContext:self.getManagedObjectContext];
[fetchRequest setEntity:entity];
NSSortDescriptor *sort = [[NSSortDescriptor alloc]
initWithKey:sortCase ascending:NO];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[fetchRequest setFetchBatchSize:BATCH_SIZE];
NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:self.getManagedObjectContext sectionNameKeyPath:nil
cacheName:@"Root"];
self.frc = theFetchedResultsController;
_frc.delegate = self;
return _frc;
}
내가 한 세그먼트 컨트롤러 콜백 메소드에서을 :
그러나- (IBAction)sortOrderChanged:(id)sender {
UISegmentedControl *sc = sender;
if (sc.selectedSegmentIndex == 0){
self.sortOrder = tableSortServer;
[self.tableView reloadData];
} else {
self.sortOrder = tableSortDate;
[self.tableView reloadData];
}
}
, 그 작동하지. 그 일을 성취하는 방법? (다른 정렬 순서로 테이블을 다시로드하십시오)?
나는 비슷한 설정을 가지고 있으며, @Andrey가 말했듯이 정렬 키가 바뀔 때마다 새로운 'FRC'가 필요할 것이다. –