2011-06-05 54 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