导航iPhone应用程序的核心数据最佳实践问题

导航iPhone应用程序的核心数据最佳实践问题,iphone,objective-c,cocoa-touch,core-data,Iphone,Objective C,Cocoa Touch,Core Data,以苹果的邮件应用程序为例;假设它使用核心数据。当您触摸电子邮件帐户时,它会显示该帐户中的所有邮件。因此,控制器对该帐户中的所有消息执行了提取请求 然后你触摸一条消息,再深入一层,现在你看到的是一条消息。这封邮件可能是从邮件列表控制器传递的,但是--您也可以单击右上角的三角形来浏览同一电子邮件帐户中的所有邮件。这意味着查看单个电子邮件的视图控制器也需要完全相同的邮件列表 因此,您可以从列表视图中剪切和粘贴获取请求逻辑,但这不是干/不要重复 对于解决此问题的最佳做法有何建议?创建一个对象来管理您的消

以苹果的邮件应用程序为例;假设它使用核心数据。当您触摸电子邮件帐户时,它会显示该帐户中的所有邮件。因此,控制器对该帐户中的所有消息执行了提取请求

然后你触摸一条消息,再深入一层,现在你看到的是一条消息。这封邮件可能是从邮件列表控制器传递的,但是--您也可以单击右上角的三角形来浏览同一电子邮件帐户中的所有邮件。这意味着查看单个电子邮件的视图控制器也需要完全相同的邮件列表

因此,您可以从列表视图中剪切和粘贴获取请求逻辑,但这不是干/不要重复


对于解决此问题的最佳做法有何建议?

创建一个对象来管理您的消息,然后与该对象交互以获取任何视图控制器所需的消息。
如果您以后决定从CoreData切换,这也将允许您在不更改任何视图控制器逻辑的情况下从CoreData切换。

我用来解决此问题的解决方案是使用委托设计模式。即,在具有rootViewController和detailViewController的应用程序中,rootViewController充当detailViewController的委托

因此,例如,当用户在查看电子邮件(在详细视图上)时,他们单击一个按钮以迭代新消息,然后detailViewController通过委托方法通知rootViewController rootViewController需要显示新消息

这样,detailViewController只需要知道关于一个模型对象(正在显示的电子邮件)的信息。而rootViewController处理涉及其余对象的交互


对我来说,这是一个很好的职责分工,所以这就是我一直使用的解决方案。

非常感谢Jesse的建议。对于我正在开发的应用程序,我认为这有点过头了,它是一个相对简单的应用程序,所以我希望尽可能坚持使用模板代码。但您的解决方案听起来对更复杂的应用程序非常有用。