以Apple的Mail应用程序为例;假装它使用核心数据。当您触摸电子邮件帐户时,它会显示该帐户中的所有邮件。因此,控制器对该帐户中的所有邮件执行了获取请求。
然后,您触摸消息并深入钻取一个级别,现在您正在查看单个消息。此消息可能是从消息列表控制器传递的,但是 - 您还可以单击右上角的三角形来浏览同一电子邮件帐户中的所有消息。这意味着用于查看单个电子邮件的视图控制器也需要完全相同的消息列表。
所以你可以从列表视图中剪切和粘贴获取请求逻辑,但这不是DRY /不重复自己。
有关解决此问题的最佳做法的任何建议吗?
答案 0 :(得分:2)
创建一个对象来管理您的消息,然后与该对象进行交互以获取任何视图控制器所需的消息。 如果您决定稍后更改任何视图控制器逻辑,这也允许您从CoreData切换。
答案 1 :(得分:2)
我一直用来解决这个问题的解决方案是使用委托设计模式。即,在具有rootViewController和detailViewController的应用程序中,rootViewController充当detailViewController的委托。
因此,例如,当用户正在查看电子邮件消息(在详细视图上),并且他们单击按钮以迭代到新消息时,则detailViewController通过rootViewController需要的委托方法通知rootViewController显示新消息。
这样,detailViewController只需要知道有关一个模型对象(显示的电子邮件)的信息。而rootViewController处理涉及其余对象的交互。
对我来说,这是一个很好的责任分工,所以这是我一直在使用的解决方案。