Обнаружить изменения в конкретной таблице основных данных - PullRequest
0 голосов
/ 11 июля 2011

Я использую NSFetchedResultsControllerDelegate для обнаружения изменений в табличном представлении, которое выводит «События». Но эти «События» связаны с «Ассоциацией», включая число «isFollowed» (если Assiciation.isFollow == 1, то мы печатаем событие, в противном случае мы этого не делаем). Мы можем изменить это isFollow BOOL, но NSFetchedResultsControllerDelegate обнаруживает изменения в «Событиях», а не в «Ассоциации». Поэтому я использую этот код

- (void) viewWillAppear:(BOOL)animated{
    //[self setMyFetchedResultsController:nil];
    NSError *error = nil;
    [myFetchedResultsController performFetch:&error];
    [[self myTableView] reloadData];
}

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

Спасибо, Нильс

1 Ответ

0 голосов
/ 11 июля 2011

Вы можете отслеживать уведомления о сохранении (см. Документы NSManagedObjectDidSaveNotification) и просматривать их результаты, чтобы проверить, были ли изменены какие-либо Ассоциации.Этот подход по своей сути неэффективен.

Хотя лучшим подходом, вероятно, было бы использование обратного вызова делегата от контроллера представления, модифицирующего ассоциацию, и принудительное обновление вашего контроллера ячейки таблицы / полученных результатов после этого.

Я думаю, что в данном случае было бы целесообразно просто обновить отдельную ячейку таблицы, представляющую Событие, с последующей или не выполненной ассоциацией.В случае массовых обновлений было бы лучше просто перезагрузить всю таблицу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...