2013-03-12 4 views
0

Скажем, у меня есть класс основных данных, называемый RecipeBook, который имеет свойство (отношение), называемое рецептами, NSSet объектов рецепта.Как передать модель контроллеру в основных данных

Я показываю RecipeBooks на UITableView, и когда пользователь нажимает на ячейку, он должен отображать Рецепты на другом UITableViewController.

То, что я должен передать в качестве модели для этого последнего UITableViewController:

  • контекст и fetchRequest
  • или NSSet объектов Рецепт?

Если есть изменения в db, будет ли NSSet «автоматически» обновляться?

ответ

3

Из вашего описания я бы, вероятно, передал выбранный экземпляр RecipeBook. Из этого я могу (предположительно) получить все рецепты, содержащиеся в книге, и отобразить их в таблице. Это предполагает, что существует связь от RecipeBook до Recipe, которая на основе вашего описания должна быть правдой. Если мне нужно выполнить какую-либо другую работу с хранилищем данных, я могу задать RecipeBook для контекста управляемого объекта и работать с этим.

No NSSet из загруженных объектов будет обновляться автоматически. Но отношение от RecipeBook к его Recipe s будет обновляться в любое время, когда рецепт добавляется или удаляется из книги рецептов.

И, наконец, передача любого из этого непосредственно в UITableView не имеет большого смысла. Рамки iOS от Apple разработаны с учетом MVC, и борьба с ними сделает вещи намного сложнее, чем они должны быть. Если у вас есть UITableViewController, вы можете передать объектам модели.

+0

Извините, я имел в виду UITableViewController, вы абсолютно правы. Я уже задал вопрос. – cfischer

1

Как правило, вы не должны передавать объекты «модели» для просмотра объектов. Мой любимый способ подумать о том, что представления на самом деле являются другой формой модели (думайте о них как о просто представлениях данных). Задача диспетчера состоит в том, чтобы гарантировать, что ни представление, ни представление не должны знать о том, как другое хранилище представляет собой представление.

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

Автоматический вопрос зависит от вашей базовой настройки данных, но обычно это да. По умолчанию CD использует кодирование с ключом, которое просто позволяет вам получить доступ к свойствам с помощью valueForKey:. Более продвинутые настройки предполагают, что для вас генерируются классы Xcode, и в этом случае несколько щелчков мыши получат методы доступа «точка ноты», обновленные из обновленной модели.

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