关于表视图和构造自定义类模型的iPhone MVC问题

关于表视图和构造自定义类模型的iPhone MVC问题,iphone,model-view-controller,uitableview,Iphone,Model View Controller,Uitableview,这几天我读了很多关于MVC的书,我想我有自己的想法,但我希望能得到一些关于如何最好地解决我的问题的建议和见多识广的意见 我有三个问题都与MVC设计模式有关 在我遇到的许多示例中,人们使用控件(比如表视图)用自定义类的对象(比如Student.h/m)填充数组。 但是Student类不应该有调用的方法,这些方法将返回控制器中变量的数据数组吗?MVC不是这样工作的吗?模型持有数据的定义并负责读写数据 在许多表视图示例中,在我读过的各种书籍中,它们都说,“为了方便起见,我们将使控制器成为表的委托和数据

这几天我读了很多关于MVC的书,我想我有自己的想法,但我希望能得到一些关于如何最好地解决我的问题的建议和见多识广的意见

我有三个问题都与MVC设计模式有关

  • 在我遇到的许多示例中,人们使用控件(比如表视图)用自定义类的对象(比如Student.h/m)填充数组。 但是Student类不应该有调用的方法,这些方法将返回控制器中变量的数据数组吗?MVC不是这样工作的吗?模型持有数据的定义并负责读写数据

  • 在许多表视图示例中,在我读过的各种书籍中,它们都说,“为了方便起见,我们将使控制器成为表的委托和数据源”。我还没有看到一个表视图不使用控制器作为数据源的示例。如何将表视图连接到不同的数据源

  • 我有两个模型班“任务”和“机场”。其中每一个都需要来自云中XML文件的数据。我是否在任务/机场实施文件中编写解析器?我是否创建一个单独的解析器对象?这些模型是否应将数据作为阵列重新运行到控制器

  • 虽然我理解很多理论,但我在网上找到的很多例子似乎打破了我认为我理解的很多概念

    任何解释都是非常受欢迎的。这个网站上的回复质量是惊人的。
    提前感谢

    您似乎已经对MVC的工作原理有了相当好的了解,所以我只想补充几点意见

  • 控制器负责向视图提供数据。 可能有一百万种不同的状态和场景会影响使用什么数据以及如何使用数据,这不是模型的工作。模型保存数据,控制器处理逻辑

  • 如果您的表视图需要不同的委托或数据源,可以在表视图控制器中实例化它们,然后使用
    delegate
    dataSource
    属性告诉表视图。他们需要实现
    UITableViewDelegate
    UITableViewDataSource
    协议所需的方法

  • 有时模型和控制器在功能上重叠,这是一个完美的例子

    一种解决方案是让
    任务
    机场
    类继承一个自定义类,该类知道如何下载所需的XML并设置解析器,因此它们只需提供URL并覆盖特定标记的解析器回调。与下载XML相关的所有其他内容都可以在超级类中处理

    另一种方法是创建一个单独的类,该类接受URL并返回一些XML,然后
    任务
    机场
    类调用该方法并独立解析XML

    错误的方法是让
    任务
    机场
    类都知道如何下载和解析,因为您必须在这两个地方维护代码

    有一个数据加载控制器是可以的,它将数据移交给视图控制器,因此控制器代码可以非常具体(并且可以维护)


  • 谢谢莫滕法斯特。非常有帮助+很好的解释。关于3:任务和机场的创建可以通过工厂方法模式完成