【问题标题】:Understanding MVC design in iOS了解 iOS 中的 MVC 设计
【发布时间】:2013-08-29 09:49:51
【问题描述】:

我正在努力了解适用于 iOS 的 MVC,并且我想确保我正在做的事情是适当的。

假设我有一个包含 NSString* 的 NSMutableArray 的简单类

@interface SimpleClass : NSObject

@property (nonatomic, strong) NSMutableArray *names;

@end

所以这是我的模型。是的?

假设我想编写一个按字母顺序对这些名称进行排序的方法。这个方法应该是模型中的方法,还是在数据控制器类中单独完成?对我来说,在模型中使用这种方法会更有意义。那么模型进行实际的排序,而控制器是初始化排序的地方?

听起来对吗?

但是,由于视图需要对数据进行排序才能显示,这真的是模型的基本行为吗?

【问题讨论】:

  • 查看显示sorted data,排序过程为controller
  • 酷。谢谢。如果我们有一个 3-D 对象,比如说一个立方体。然后,如果我们将立方体平移或旋转一定量 - 我们会在模型中这样做吗,因为模型数据本身正在发生变化?
  • 还是我们在控制器中操作模型?

标签: ios oop design-patterns model-view-controller model


【解决方案1】:

如果我们想在 iOS 中应用 MVC,我们有 2 个部分,特别是模型和 viewContoller,这里的视图和控制器在 iOS 中结合,如果你愿意,你可以创建单独的视图和控制器。

现在在您的问题中,您使用 NSMutable 数组创建一个类,该类将是您的模型类。

现在您说要对数据进行排序,而不是在 iOS 的 viewContoller 上执行此操作 视图和控制器是结合在一起的,因此您可以对控制器部分的数据进行操作并在视图上显示结果。

但是如果您想为显示操作创建单独的视图,您可以创建 UIView 并添加到视图控制器。

如果你创建了处理网络服务的应用程序,那么你可以做类似的事情

  1. 创建模型类,就像你做的那样设置和获取(属性)数据表单服务器
  2. 创建 DAO(数据访问对象),用于管理所有 Web 服务调用并从服务器获取数据并将其设置到模型中。

  3. 在viewController(UIview控制器)中对数据进行操作并在视图中显示 或者 3. crate spepate view for display data 对视图控制器中的模型数据进行所有操作,并将模型数据设置为视图并将该视图添加到视图控制器中。

希望这可以帮助您了解更多详细信息,请参阅此链接 https://developer.apple.com/library/ios/documentation/general/conceptual/CocoaEncyclopedia/Model-View-Controller/Model-View-Controller.html

http://blog.teamtreehouse.com/ios-design-patterns-model-view-controller-part-3 这可能对您有更多帮助。

【讨论】:

    【解决方案2】:

    让我一一澄清你所有的疑惑

    问题:假设我有一个包含 NSString* 的 NSMutableArray 的简单类

    所以这是我的模型。是吗?

    答案:是的,它是模型类,因为它只服务于世界上的单一目的,即“处理数据”

    问题:假设我想编写一个按字母顺序对这些名称进行排序的方法。这个方法应该是模型中的方法,还是在数据控制器类中单独完成?对我来说,在模型中使用这种方法会更有意义。那么模型进行实际排序,而控制器是初始化排序的地方?

    Answer : 这个方法应该是可见的,因为它只是根据你的需要对数据进行排序,将来有一天你可能需要以其他方式对这些数据进行排序。或者您可能还需要为其他一些设备开发此应用程序。并且由于其他一些要求,您可能需要以其他方式对其进行排序。如果您将在模型类或控制器类中执行此操作,那么您将代码限制为可扩展,因此它应该在视图类中。

    控制器将实现所有业务逻辑。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2012-05-24
      • 2012-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-22
      • 2015-08-25
      • 2011-08-06
      相关资源
      最近更新 更多