【问题标题】:Model classes -- what the heck do they really mean?模型类——它们到底是什么意思?
【发布时间】:2011-09-08 14:39:54
【问题描述】:

我似乎真的无法掌握 MVC 中模型对象的窍门。我想知道为什么我们不能只使用数组和字典以及字典数组?

我知道它们代表了我的其他类操作和使用的“数据”。但是它们的正确构建方式是什么?假设我有一个要阅读并在表格视图中显示的 plist。我可以直接将它加载到我的 viewDidLoad 方法中的数组属性中,然后使用它,对吗?为什么我要使用 Model 类,我将如何构建它?

此外,任何可以解释这一点的资源/博客链接都将不胜感激!

【问题讨论】:

  • 您的问题与stackoverflow.com/questions/26685/… 有何不同
  • 我假设你是一个注册的 ios 开发者,所以这里有一个来自 IOS 开发者库的页面:developer.apple.com/library/ios/#documentation/General/…
  • 我正在寻找的是代码中的示例。
  • 是的,您总是可以处理集合类(NSDictionary、NSArray、...)。对于您的特定示例,显示一个实际上很好的持久集合。一旦涉及到修改数据,使用适当的模型类肯定会更方便。
  • 请不要发布新的重复问题。编辑这个以使其更清晰。

标签: objective-c ios cocoa-touch model-view-controller model


【解决方案1】:

您绝对可以使用字典和数组——将它们用作数据模型的一部分(或全部)没有任何问题。 Core Data 的 NSManagedObject 非常像字典。但有时您希望模型对象做的不仅仅是存储数据——您可能还希望它们了解各种数据之间的关系、对数据的操作等等。

考虑如何在数据模型中表示 Person。应该是字典吧?使用 firstName、lastName、middleName、address、phone、email、dateOfBirth 等键...如果您使用普通的旧字典,无论是否可变,您只需为每个键存储适当的值即可。如果这真的是您所需要的,那么您就完成了。

另一方面,您可以从这些字段中获取大量其他信息,而无需存储额外数据。如果你创建一个自定义的 Person 类,你可以给它像 fullName、age、initials、monogram 和 vCard 这样的键。自定义类可以为每个操作存储信息以得出适当值的方法提供方法。示例:

- (NSString*)fullName
{
    return [NSString stringWithFormat:@"%@ %@ %@", self.firstName, self.middleName, self.lastName];
}

这只是一个非常简单的例子。也许您的应用程序管理一组仓库的整个库存。在这种情况下,您可能需要代表零件、箱、调色板、位置、供应商、目的地、订单、发票、叉车、操作员等的类。当有人从箱中挑选零件时,您希望该箱知道如果数量小于某个阈值,则剩余多少部分并发送通知。该通知可能会触发一个事件,告诉叉车去获取该类型零件的另一个调色板并将其交付到垃圾箱。拣选后,应将零件从箱中转移到订单中。当然,订单应该知道如何生成适当的发票。等等。所有这些逻辑都可以成为模型的一部分。

【讨论】:

  • 您好,感谢您的回答。好吧,如果我使用自定义 Person 类,我将如何以及在何处将其加载为属性?如果我使用字典,我会在 viewDidLoad 中使用 initWithContentsOfFile 对吗? “加载”模型对象的等效过程是什么?
  • 这完全取决于您。你见过Archives and Serializations Programming Guide吗?
猜你喜欢
  • 2012-03-23
  • 2014-05-16
  • 2015-02-12
  • 1970-01-01
  • 2017-08-07
  • 2017-07-20
  • 2014-09-23
  • 2014-07-25
  • 2012-09-17
相关资源
最近更新 更多