例如:假設我抓取一個名稱列表並將其保存到NSMutableArray中。我是否實現了實際調用服務器以獲取控制器(UIViewController)或模型(Friends對象)中數據的方法?模型視圖控制器:控制器或模型是否從服務器獲取數據?
回答
這是一個設計決定,取決於你想要完成什麼。如果您的模型僅在單個服務的上下文中有意義,或者您希望您的模型提供對服務器上所有數據的訪問權限,則將與服務器的連接構建到您的數據模型中。例如,如果您爲Twitter或Flickr等服務構建客戶端,這可能是有意義的。另一方面,如果你只是從服務器獲取一個文件,並且這是文件的結尾,那麼在控制器中進行通信可能是有意義的。控制器往往不太可重用,並且更適合應用程序的特定行爲。保持關於數據來自模型的具體細節使模型更加可重用。它也使測試變得容易 - 您可以編寫只讀取本地文件並將數據存儲在模型中的測試代碼。
這是一個很好的問題。我認爲最好的方法是通過一個控制器,因爲它將您的模型與要求其他模型的模型分開,以使其正常工作。儘管我不認爲你在模型中違反了「適當的mvc」。
我想你想把它放在模型中。你要做的是詢問數據模型,然後模型將處理如何從內部數據存儲或外部數據存儲(如服務器)填充自身。
一種方法是使用存儲庫模式。爲此,您需要在Model文件夾中創建Repository對象,並將所有與數據庫相關的方法放入其中。您的控制器調用存儲庫類來獲取數據。這使您可以將真正的模型對象與數據庫訪問方法分開。
我使用MVCS模式(模型 - 視圖 - 控制器 - 商店),我在艾倫·希爾加斯的書發現「IOS程序設計:大書呆子牧場指南」(http://www.bignerdranch.com/book/ios_programming_the_big_nerd_ranch_guide_rd_edition_)
這家店是專門設計來取數據,無論它來自服務器,本地文件,持久集合,數據庫等。
它允許構建非常演變的應用程序。例如,您可以基於Web服務構建您的應用程序,並且在您希望保留數據的那一天,您必須修改存儲,而無需修改控制器中的單行代碼。
這是一個很像存儲庫模式(http://msdn.microsoft.com/en-us/library/ff649690.aspx)(CF BobTurbo的答案)
我會親自做一個DAO,或數據輔助類。當事情變得更加複雜時,很難在目標C中遵循嚴格的MVC。但是,把它放在模型或VC中也沒有錯。
- 1. 模型視圖控制器中的模型視圖控制器
- 2. MVCS - 模型 - 視圖 - 控制器服務
- 3. 模型視圖控制器服務
- 4. 模型視圖控制器
- 5. 是否在模型或控制器
- 6. 模型從視圖不給控制器
- 7. 將數據從控制器傳遞到控制器到模型
- 8. MVC - 此代碼是否屬於模型,控制器或視圖?
- 9. 從模型到控制器的數據
- 10. Ruby on Rails的 - 從模型或控制器而不是視圖
- 11. 試圖將模型數據從視圖傳遞到控制器
- 12. 瞭解模型 - 視圖 - 控制器
- 13. Android中的模型視圖控制器
- 14. GWT模型視圖控制器
- 15. 模型 - 視圖 - 控制器和Java
- 16. (模型/視圖/控制器)MVC
- 17. 模型,視圖,控制器混亂
- 18. 辭退模型 - 視圖 - 控制器
- 19. PHP視圖 - 控制器類模型
- 20. 視圖模型屬性在控制器
- 21. 模型視圖控制器和回調
- 22. Qt模型/視圖/控制器示例
- 23. JavaScript中的模型 - 視圖 - 控制器
- 24. PHP MVC - 從模型或控制器調用視圖函數?
- 25. 從模型或控制器斷言Rails?
- 26. 根據Java中的模型 - 視圖 - 控制器製作視圖
- 27. Zend RestController>使用模型或控制器獲取數據?
- 28. 在控制器或模型中獲取POST數據
- 29. 獲取電流控制器的模型
- 30. Codeigniter控制分貝數據應該在模型或控制器?
應該在模型中。 – doNotCheckMyBlog