Получить новый объект, добавленный в NSFetchedResultsController? - PullRequest
0 голосов
/ 23 августа 2010

Даже не уверен, что это возможно, но вот пример использования:

У меня есть таблица RootView, которая использует NSFetchedResultsController для управления списком.Я нажимаю кнопку добавления, которая представляет AdditionViewController.AdditionViewController использует отдельный managedObjectContext для создания нового объекта.При сохранении объект передается обратно в RootView, где новый объект (в новом managedObjectContext) объединяется с основным managedObjectContext.Затем AdditionViewController отклоняется, открывая RootView.

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

Как я могу получить объект, который был только что добавлен к fetchedResultsController, чтобы передать его в DetailViewController?

- ОБНОВЛЕНИЕ -

Все еще ничего об этом.Позвольте мне попытаться объяснить, что мне нужно сделать (надеюсь) немного лучше.Если это все еще сбивает с толку, задавайте вопросы.Мне трудно думать о том, как описать проблему.

Я полностью осознаю, как выдвинуть представление «Подробности» под видом модального сложения при сохранении нового объекта.Проблема в том, что объект, который я сохраняю, сам по себе fetchedReaultsController.Я объединяю этот frc с основным fetchedResultsController, поэтому, если я пытаюсь отправить объект в подробный вид, я получаю сбой, потому что объект был признан недействительным (из-за слияния) к моменту, когда представление модального сложения отклоненои подробный вид вызывает viewWillAppear.Вот что я пытаюсь обойти.Как я могу выяснить, какой объект был только что добавлен к основному fetchedResultsController, чтобы отправить его в detailViewController?

- ОБНОВЛЕНИЕ -

Добавление награды для любого, кто может сказатьмне, как получить последний добавленный объект из выбранного контроллера результатов.Или как извлечь конкретный объект из выбранного контроллера результатов, не зная его indexPath.

Ответы [ 2 ]

0 голосов
/ 30 августа 2010

Для записи ответ состоял в том, чтобы получить идентификатор объекта для объекта в addManagedObjectContext ПОСЛЕ сохранения контекста (так как идентификатор изменяется после сохранения) и передачи этого идентификатора в главный managedObjectContext после объединения. Полный код, необходимый для этого ниже (если у кого-то есть более простой способ, дайте мне знать)

detailViewController.object = (customObject *)[[fetchedResultsController managedObjectContext] objectWithID:[[[[addingManagedObjectContext registeredObjects] allObjects] objectAtIndex:0] objectID]];

Спасибо frenetisch applaudierend за указание в правильном направлении.

0 голосов
/ 23 августа 2010

Вот как я это сделал в почти идентичном сценарии использования:

  1. Когда отображается AdditionViewController, пользователь может сохранить созданный элемент или отменить его из нового элемента.диалог.Я передал выбор пользователя обратно на RootViewController.
  2. Если пользователь отменил, удалите созданный вами объект из контекста.
  3. Если пользователь решил сохранить, сохраните контекст и отобразитеDetailViewController.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...