代码之家  ›  专栏  ›  技术社区  ›  Idan

MVC-可可界面-可可设计模式手册

  •  1
  • Idan  · 技术社区  · 14 年前

    所以我开始读这本书: http://www.amazon.com/Cocoa-Design-Patterns-Erik-Buck/dp/0321535022

    在第二章中,它解释了MVC设计模式,并给出了我需要澄清的示例。

    这个简单的示例显示了一个具有以下字段的视图: 工作时间,标准工时,工资。

    本例分为三个部分: 视图-包含一些文本字段和一个表(该表包含员工数据列表)。

    控制器-由nsarraycontroller类组成(包含MyEmployee数组)

    Model-MyEmployee类,用于描述员工。 myEmployee类有一个方法,它根据计算逻辑返回工资, 以及与视图UI控件一致的属性。 myEmployee从nsManagedObject继承。

    有几件事我不确定: 1。在myEmplpyee类实现文件中,计算方法使用类似句子的方法获取类属性 “[[self-valueforkey:@”hourlyrate“]floatValue];”然而,在头中没有名为hourlyrate的数据成员或任何视图字段。

    我不太确定它是如何工作的,以及它如何从右视图字段中获取值。(是否必须与视图中的字段名同名)。 也许这个连接是以某种方式使用接口生成器实现的,并且没有出现在书中?

    更重要的是: 2。它如何将视图与模型分离?比如说,正如书中所暗示的,有一天我决定移除视图中的一个字段。 据我所知,这意味着改变MyEmplpyee中工资方法的工作方式(因为我们少了一个字段),并从同一个calss中删除一个属性。 那么,如果改变一个视图反射到另一个视图上,这是如何将视图与模型分开的呢?

    我想我弄错了…有什么意见吗? 谢谢

    1 回复  |  直到 14 年前
        1
  •  0
  •   Tom Dalling    14 年前
    1. 这个 valueForKey: 讨论了方法的实现 here . 注意 价值: 可以直接访问ivar,而不调用任何方法。

    2. 如果从InstableView中删除列,则不必从模型对象类中删除它。它还在那里,只是不显示。