0
私は、フェッチされた結果コントローラによって管理されるテーブルビューを持っています。 私がしたいのは、ユーザーがセグメント化されたコントロールをタップしたときのソート順を変更することです。 これは私がフェッチ結果コントローラの作成方法です。しかし、その動作しないReload fetchedResultsController data
- (IBAction)sortOrderChanged:(id)sender {
UISegmentedControl *sc = sender;
if (sc.selectedSegmentIndex == 0){
self.sortOrder = tableSortServer;
[self.tableView reloadData];
} else {
self.sortOrder = tableSortDate;
[self.tableView reloadData];
}
}
:私はセグメント化されたコントローラのコールバックメソッドで
- (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;
}
を。その仕事を達成するには? (別のソート順のテーブルをリロードする)?
私は似たセットアップをしています。@Andreyによると、あなたのソートキーが変わるたびに新しい 'FRC'が必要です。 –