У меня есть UITableView
, используя NSFetchedResultsController
, чтобы отобразить список пользователей. Я добавил UISegmentedControl
, чтобы переключаться между моим полным списком пользователей и только моими активными пользователями.Фильтрация UITableView из NSFetchedResultsController и основные данные с NSPredicate
Чтобы получить свой список пользователей, я использую fetchedResultsController
:
- (NSFetchedResultsController *)fetchedResultsController
{
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"User" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
[fetchRequest setFetchBatchSize:20];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"lastname" ascending:YES];
NSArray *sortDescriptors = @[sortDescriptor];
[fetchRequest setSortDescriptors:sortDescriptors];
if (self.barSegmentedControl.selectedSegmentIndex == 1) {
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"active == YES"]];
}
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:@"Master"];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;
NSError *error = nil;
if (![self.fetchedResultsController performFetch:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return _fetchedResultsController;
}
Чтобы выполнить обновление Tableview при нажатии на UISegmentedControl
, я использую segmentedControlIndexChanged
:
-(IBAction) segmentedControlIndexChanged{
self.fetchedResultsController = nil;
[self fetchedResultsController];
[self.tableView reloadData];
}
Но я не уверен, что я делаю это правильно. Не могли бы вы сказать мне, если это правильный способ фильтрации UITableView
с NSFetchedResultsController
?
Я также хотел узнать, можно ли отфильтровать список с помощью анимации? Точно так же, как в iPhone Phone App, когда на вкладке «Реценты» он переключается со всех вызовов на пропущенные вызовы?
Благодарим за помощь.
Что-то не работает? Как вы в настоящее время обрабатываете методы делегатов FRC? – Wain