2013-11-11 3 views
0

Пожалуйста, направьте меня по правильному пути.NSFetchedResultsController refresh для получения новых данных

Я реализовал этот код, чтобы забрать свои объекты:

- (NSFetchedResultsController *)fetchedResultsController { 
    if (_fetchedResultsController != nil) { 
     return _fetchedResultsController; 
    } 

    NSPredicate *predicate = nil; 

    if (self.selectedCategory) 
    { 
     predicate = [NSPredicate predicateWithFormat:@"ANY category_ids.category_id == %@", self.selectedCategory]; 
    } 

    _fetchedResultsController = [EyeArtist fetchAllGroupedBy:nil withPredicate:predicate sortedBy:@"artist_id" ascending:NO delegate:self]; 

    return _fetchedResultsController; 
} 

Так что, когда приложение запустить в первый раз принести произведения без предиката, поэтому во второй раз мне нужно новый принести с предикатом.

Я нажимаю на кнопку и задаю строку self.selectedCategory, но я не знаю, как восстановить данные из - (NSFetchedResultsController *) fetchedResultsController;

Так что, я полагаю, это должно быть похоже на выполнение нового запроса для экземпляра fetchedResultsController.

ответ

4

После изменения критериев поиска, вы должны установить переменный экземпляр _fetchedResultsController в nil, так, что следующий вызов функции «ленивым геттерной» создает новый FRC с измененного предиката. Что-то вроде этого:

_fetchedResultsController = nil; 
// Or: self.fetchedResultsController = nil, it does not make a difference 
[self.fetchedResultsController performFetch:&error]; 
[self.tableView reloadData]; 
+0

Если поглотитель используется ... если вы просто инициализируется в FRC под self.fetchedResultsController там нет FRC осталось после '_frc = ноль;' – Evils

+0

@Evils: После установки '_fetchedResultsController = ноль ; ', следующий вызов' self.fetchedResultsController' воссоздает FRC в методе getter (теперь с использованием измененных критериев поиска). –

+0

Вот что я имел в виду, когда говорил, если бы использовался геттер. Вы упомянули ленивого геттера, но большинство людей, вероятно, не поймут, что вы предположили, что есть правильный приемник. Во всяком случае, мой комментарий не обязательно был настолько ясен, моя вина! – Evils

Смежные вопросы