2010-03-12 35 views
3

快速問題,我的數據模型是一個單例對象,它包含我想要存檔的名稱列表。我的想法是讓模型負責加載和保存自己的數據。該模型的load方法將由ViewControllerviewDidLoad方法和saveViewControllerapplicationWillTerminate調用。我可以直接在ViewController中執行加載/保存操作,但這會很麻煩,因爲名稱列表是模型的實例變量。MVC,可以建模保存/加載其數據?

加里

回答

2

你可以只加載和初始化和dealloc的方法保存(雖然這是常見的顯式調用保存方法)。將它封裝在模型類中是個好主意。如果你從網絡加載,你可能想要單獨使用loadData方法,而不是從init開始。

+0

init可能會是一個好主意,我還沒有考慮。這也是有道理的,因爲現在我在那裏分配一些實例變量。當我執行加載(通過歸檔/ NSCoding)時,如果找到了保存文件,或者如果沒有,則需要加載,因此將它們放在一起會有所幫助。 – fuzzygoat 2010-03-13 23:22:29

1

蘋果公司建議使用延遲初始化只要有可能,所以我覺得你正朝着正確的道路,雖然你可能要考慮製作方法名的東西,看起來像一個屬性訪問器,例如-names而不是-load(特別是因爲有一個名爲+load一個類的方法,這意味着完全不同的東西)。

+0

有很多以「load」開頭的UIKit實例方法,所以我不同意這一點。由於這是一個在應用程序中廣泛使用的單身人士,我認爲立即加載數據是有意義的,但我同意一般情況下最好不要在必要時初始化字段。在訪問器中分別加載每個屬性是否有意義取決於我認爲的上下文。有時,一次加載和初始化可能會更好,特別是如果從網絡加載對象的內容。但其他時候這可能是無效的。 – Felixyz 2010-03-12 19:21:58

+0

我不認爲我建議使用'load'作爲長方法名稱中的前綴有任何特殊的缺點。然而,由於'+ load'是在NSObject中聲明的,因此它的所有後代都被繼承了(幾乎所有的東西),我不願意命名一個實例方法,只是簡單的'-load',但那只是我。 – jlehr 2010-03-13 00:26:36

+0

我可能應該已經清楚了,我只是使用「加載」和「保存」來指代相關操作,而不是暗示我會將它們用作方法名稱。鑑於我在做什麼,他們可能最終會成爲「loadCore」或「loadReactor」。 – fuzzygoat 2010-03-13 23:24:24