【问题标题】:Core Data best practices question for Navigation iPhone AppNavigation iPhone App 的核心数据最佳实践问题
【发布时间】:2010-03-04 21:40:16
【问题描述】:

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

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

因此您可以从列表视图中剪切和粘贴获取请求逻辑,但这不是 DRY/don't-repeat-yourself。

对于解决这个问题的最佳实践有什么建议吗?

【问题讨论】:

    标签: iphone objective-c cocoa-touch core-data


    【解决方案1】:

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

    【讨论】:

    • 非常感谢杰西的建议。对于我正在开发的应用程序,我认为这有点矫枉过正,这是一个相对简单的应用程序,所以我想尽可能地坚持模板代码。但是您的解决方案听起来对更复杂的应用程序非常有帮助。
    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-04-11
      • 1970-01-01
      • 2011-11-30
      • 1970-01-01
      • 1970-01-01
      • 2012-01-29
      • 2011-03-22
      • 1970-01-01
      • 2017-03-05
      相关资源
      最近更新 更多