2010-09-07 41 views
4

我是新手編程,特定於iphone應用程序編程。在閱讀了關於MVC的一堆之後,我決定在一個小應用程序中嘗試一下。至於我的理解,MVC是這樣工作的:iPhone MVC。模型問題

模型:數據,操縱數據,檢索數據。 ViewController:格式化數據從模型(N​​SDate到特定樣式)等。 查看:實際的gui。

如果這確實是一個基本的MVC理論的正確表述,我的困惑在於數據如何在模型,VC和視圖之間傳遞。例如:如果我打電話到Twitter並獲取模型中的數據,我如何(正確)將此信息傳遞給VC以便進一步工作。我知道VC和View之間主要使用IBOutlets。模型是我真正的問題。

在我的上一個應用程序中,我在應用程序委託中創建了一個NSString變量,所以我可以從任何類訪問這些數據。不過,我讀到,當應用程序變得複雜時,這不是最好的方法,因爲代理負責啓動,結束應用程序,而不是保存數據。

我讀過委託方法,singleton的,NSNotification(我用它來調用其他類中的方法)。問題在於我不太瞭解如何使用這些技術將數據從模型傳遞到其他視圖。

如果我的問題不清楚,請讓我知道。

回答

3

如果您考慮可重用性,可以再次使用的主要組件是您的模型對象和視圖對象。他們可以移動到不同的應用程序,仍然可以正常使用。您的視圖控制器是真正特定於您的應用程序以及大部分應用程序邏輯的地方。

因此,在您的示例中,您可能有一個Twitter對象,可能存儲來自用戶的信息和推文。您可以在其自己的.h和.m文件中分別創建該類的所有函數。然後在您的視圖控制器中,使用檢索到的數據實例化twitter類,並從視圖控制器中開始使用它。

您的視圖控制器實際上是檢索數據,但您的模型對象是維護數據的人。通過這種方式,您可以將模型數據與您的Twitter對象一起傳遞給其他視圖控制器。

+0

你能給我一個例子,說明如何從ViewController類訪問twitter類中的數據嗎?這是我的主要問題。我認爲我理解mvc,但我不太清楚如何在模型和控制器之間處理數據。 – nicholjs 2010-09-08 03:36:54

+0

一旦你從視圖控制器創建了twitter對象,你就可以通過你在twitter類中創建的getters和setter來訪問任何數據。 Twitter類將處理與自己的數據操作和處理有關的所有邏輯。你可以從視圖控制器調用它們。因此,例如,您將創建twitter對象:twitterObject * t = [[twitterObject alloc] init ...];然後從你的視圖控制器,你可以通過獲得者訪問數據,所以t.username或t.tweets等 – Kennzo 2010-09-08 15:55:19

+0

這正是我需要看到的。謝謝! – nicholjs 2010-09-08 23:16:12

1

對應用程序的控制駐留在控制器中,因此它是將檢索或保存持久數據,使用該數據更新視圖並處理各種事件的對象。考慮一下模型和視圖之間的膠水!例如,如果您要點擊一個按鈕來打開一個新的模式視圖,您可以在視圖控制器中處理該事件。在響應點擊按鈕的方法中,您將創建或訪問新的視圖控制器,並使用presentModalViewController:animated:來呈現它。如果新視圖和控制器需要當前控制器可以訪問的數據,則可以在新控制器中設置屬性以引用該對象。

+0

我明白了。但我仍然不明白如何在模型和控制器之間傳遞對象。在模型中說我有NSArray * myArray =一些數組。 – nicholjs 2010-09-07 21:17:41

+0

如何訪問控制器中的數組? – nicholjs 2010-09-07 21:18:05

+0

您可以從您的控制器中定義或訪問模型對象開始,就像您最初在使用字符串的代表中所做的一樣。該模型不需要知道有關視圖或控制器的任何信息。它是瞭解模型和視圖的控制器。 – 2010-09-07 21:41:28