2

В моем приложении iPhone у меня есть NSFetchedResultsController, показывающий объекты пользователя в UITableView. Пользовательские объекты имеют 0-много объектов журнала. Сводка объектов журнала отображается вместе со своим объектом User в UITableView.Как вызвать перезагрузку в NSFetchedResultsController без изменения выбранного объекта?

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

До сих пор я это сделать, написав на объект пользователя:

log.user = nil; 
log.user = [User current]; // Same as before. Just triggering a reload. 
NSError *error = nil; 
[myManagedObjectContext save:&error]; 

Это прекрасно работает, но, кажется, немного как взломать.

Есть ли лучший способ сделать это? Как указано, что изменения в объекте журнала должны также распространяться на объект User?

ответ

2
[myFetchedResultsController performFetch:&error]; 

Но зачем вы хотите это делать? Он должен перезагружаться только при появлении новых данных для его извлечения. Если есть новые данные, то сохранение NSManagedObjectContext является правильным действием.

Какова ваша основная цель?

+0

Здесь * есть новые данные, доступные в объектах журнала. Объекты журнала суммируются вместе с объектом User на экране пользователя. Однако обновление только объекта журнала не приведет к обновлению выбранного объекта пользователя. – geon

+1

В этом случае, если вы находитесь в соответствующем контроллере представления, достаточно было бы вызвать '-reloadData', если бы не я, то у меня был бы соответствующий контроллер вида для прослушивания' NSManagedObjectContextDidSaveNotification' и обновления таблицы (или даже сузить его до определенного клеток) по мере необходимости. Ваше первоначальное решение кажется рискованным. –