理解iOS中的MVC设计

理解iOS中的MVC设计,ios,oop,design-patterns,model-view-controller,model,Ios,Oop,Design Patterns,Model View Controller,Model,我正在努力了解iOS版MVC,我想确保我所做的是适当的 假设我有一个简单的类,它包含一个NSString的NSMutableArray* @interface SimpleClass : NSObject @property (nonatomic, strong) NSMutableArray *names; @end 这就是我的模型。是吗 假设我想写一个按字母顺序排列这些名字的方法。这个方法应该是模型中的方法,还是在数据控制器类中单独完成?对我来说,在模型中使用这种方法更有意义。因此,模

我正在努力了解iOS版MVC,我想确保我所做的是适当的

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

@interface SimpleClass : NSObject

@property (nonatomic, strong) NSMutableArray *names;

@end
这就是我的模型。是吗

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

听起来对吗


但是,由于数据排序是视图需要显示的东西,所以这真的是模型的基本行为吗

让我逐一澄清你的疑问

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

@interface SimpleClass : NSObject

@property (nonatomic, strong) NSMutableArray *names;

@end
这就是我的模型。是吗

答案:是的,这是一个模型类,因为它在世界上只用于“处理数据”这一单一目的

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

回答:这种方法应该在考虑范围内,因为它只是根据您的需要对数据进行排序,将来某一天您可能需要以其他方式对这些数据进行排序。或者您可能还需要为其他设备开发此应用程序。由于其他一些要求,您可能需要以其他方式对其进行排序。若您将在模型类或控制器类中执行此操作,那个么您将限制代码的可伸缩性,所以它应该在视图类中

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


我希望这有助于

如果我们想在iOS中应用MVC,我们有两个部分,特别是模型和ViewController,在iOS中视图和控制器是组合的。如果您愿意,您可以创建单独的视图和控制器

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

现在,您说您希望对数据进行排序,而不是在iOS中的viewContoller上进行排序 视图和控制器是组合的,所以您可以对控制器部件中的数据进行操作,并在视图上显示结果

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

比如,如果您创建的应用程序已经处理了web服务,那么您就可以执行类似的操作

  • 像在服务器上设置和获取(属性)数据一样创建模型类
  • 板条箱DAO(数据访问对象),用于管理所有web服务调用,从服务器获取数据并将其设置为模型

  • 在视图控制器(UIview控制器)中操作数据并在视图中显示 或3。在视图控制器中对模型数据执行所有操作,并将模型数据设置为视图,然后将此视图添加到视图控制器中

  • 希望这能帮助您了解更多详情,请参考此链接


    这可能会给您带来更多帮助。

    视图显示
    已排序的数据
    ,排序过程是
    controller
    很酷。谢谢如果我们有一个三维物体,比如一个立方体呢。然后,如果我们将立方体平移或旋转一定量,我们会在模型中这样做吗,因为模型数据本身正在变化?还是在控制器中操纵模型?