Вопрос о передовых методах Core Data для приложения iPhone для навигации - PullRequest
5 голосов
/ 05 марта 2010

Используя приложение Apple Mail в качестве примера; притворяться, что он использует Core Data. Когда вы касаетесь учетной записи электронной почты, он показывает вам все сообщения в этой учетной записи. Таким образом, контроллер сделал запрос на выборку для всех сообщений в этой учетной записи.

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

Таким образом, вы можете вырезать и вставить логику запроса на выборку из списка, но это не DRY / not-repeat -self.

Какие-либо предложения для лучшей практики в решении этой проблемы?

Ответы [ 2 ]

2 голосов
/ 23 июля 2010

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

Так, например, когда пользователь просматривает сообщение электронной почты (в подробном представлении) и нажимает кнопку, чтобы перебрать новое сообщение, то detailViewController сообщает rootViewController через метод делегата, который необходим rootViewController отобразить новое сообщение.

Таким образом, detailViewController только каждый должен знать информацию об одном объекте модели (отображаемое электронное письмо). В то время как rootViewController обрабатывает взаимодействие с остальными объектами.

Для меня это хорошее разделение ответственности, так что это решение, которое я использовал.

2 голосов
/ 05 марта 2010

Создайте объект для управления вашими сообщениями, затем взаимодействуйте с этим объектом, чтобы получить сообщения, которые вам нужны для любого из ваших контроллеров представления. Это также позволит вам переключаться с CoreData без изменения логики контроллера представления, если вы решите сделать это позже.

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