我寫了我的第一個應用程序,它使用Web數據來構建自定義視圖。雖然它在工作,但我不禁認爲它可能並不完全遵循MVC概念(我不確定這是否會影響蘋果如何批准應用程序)。MVC與網絡查詢
我有一個單一的視圖控制器與自定義視圖類,實現drawRect
。由於drawRect需要來自網絡的數據,所以在自定義視圖類本身中進行所有下載感覺很自然。
但是,這通常如何完成?我猜測,視圖控制器通常應該處理下載,並且控制器是異步下載的代理,因此它可以根據錯誤等安排視圖等。相反,我的自定義視圖類是處理異步的代理,而且這對我來說看起來很糟糕。但也許它不是?
如果我想在所有下載中使用View Controller,我想我只是將自定義視圖的實例變量設置爲下載結果,因爲自定義視圖需要繪製數據。這會是一個更好的方法嗎?
我會傾向於說這項工作並不在控制器中,但我可以開放辯論,因爲我真的不確定。我喜歡把'M'和'V'想象成相當靜態的'C'周圍的可交換組件。如果你把這個邏輯放在'Model'中,那麼'Controller'只是要求數據傳遞給'View'。如果我們創建'Model'句柄,那麼我們可以在不影響View或Controller的情況下交換數據的後備源(比如我們緩存到本地文件或決定我們想從數據庫獲取數據)。這個'Model'現在也可以被多個'Controllers'重複使用。只是我的想法。 –
模型對象如何知道何時獲取? – jlehr
'Controller'告訴它。控制器本質上會創建模型並說'myViewLabel = [model getLabelContent];(簡化的人爲的例子)。模型對象可以從網上抓取,一個文件,一個sqlite ......沒關係,'controller'不關心它只是想將數據傳遞到視圖 –