模型类 - 他们真正意味着什么?

时间:2011-06-05 03:39:22

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

我真的无法在MVC中获得模型对象。我想知道为什么我们不能只使用数组和字典以及字典数组?

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

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

1 个答案:

答案 0 :(得分:6)

你绝对可以使用字典和数组 - 将这些用作数据模型的一部分(或全部)并没有错。 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];
}

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