2011-06-05 53 views
3

我真的无法得到模型对象在MVC中的悬念。我想知道为什么我们不能只使用数组和字典和字典数组?模型类 - 他们真的是什么意思?

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

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

+1

你从这个问题有什么不同?http://stackoverflow.com/questions/26685/what-is-mvc-and-what-are-the-advantages-of-it – Tatvamasi 2011-06-05 03:47:54

+0

我假设你是一个注册的ios开发者所以这里是来自IOS Developer库的页面:https://developer.apple.com/library/ios/#documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html – ditkin 2011-06-05 03:49:55

+0

我在找的是代码示例。 – NSExplorer 2011-06-05 04:16:11

回答

6

您绝对可以可以使用字典和数组 - 将数据作为(或全部)数据模型的一部分使用没有任何问题。核心数据的NSManagedObject非常像字典。但是有时候你希望你的模型对象不仅仅是存储数据 - 你可能还希望他们知道一些关于各种数据如何相互关联,对数据进行操作等等。

考虑如何在数据模型中表示Person。可能是字典,对吧?使用像firstName,lastName,middleName,address,phone,email,dateOfBirth这样的键......如果使用普通的旧字典,不管是否可变,只需为每个键存储适当的值,即可完成。如果这真的是你需要的,你就完成了。

另一方面,您可以从这些字段获取大量其他信息,而无需存储额外的数据。如果您创建自定义Person类,则可以为其指定全名,年龄,首字母,字母组合和vCard等密钥。自定义类可以为每个操作存储信息的方法提供适当的值。例如:

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

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

+0

嘿谢谢你的回答。那么,如果我使用一个自定义Person类,我将如何以及在何处将它作为属性加载?如果我使用字典,我会在我的viewDidLoad中使用initWithContentsOfFile吗? “加载”模型对象的等效过程是什么? – NSExplorer 2011-06-05 06:11:01

+0

这真的取决于你。你见过[Archives and Serializations Programming Guide](http://tinyurl.com/6dhcs5t)吗? – Caleb 2011-06-05 06:18:04