2010-10-27 66 views
2

什麼是存儲標籤的字體信息在可可觸摸以下的MVC模式的最佳實踐?哪裏存儲標籤字體信息 - 在模型或視圖?

在我的數據模型,我想存儲由一個自定義視圖UILabel小號顯示的信息。很明顯的是,標籤文本屬於數據模型。但是我應該在哪裏存儲相應的字體(並且在我的情況下也是彩色的)信息?它們「屬於」數據模型還是屬於視圖?

我問原因是這樣的:如果我只是UIFont類的屬性添加到我的數據模型,我將序列化和複製我的數據(因爲UIFont沒有實現NSCodingNSCopying協議)時遇到了麻煩,而我通常用於我的數據模型的其他類則可以。 (這個問題不存在UIColor,因爲一個已經擁有NSCoding並且可以輕鬆地添加NSCopying,儘管人們仍然可以問,如果顏色應該「屬於」的數據模型。)

一般來說,我想是能夠序列化我的數據模型的所有屬性,這似乎是MVC中非常常見和普遍的模式。當然,我也可以寫一個字體信息的抽象,而不是直接使用UIFont作爲我的數據模型中的一個屬性。但是我想知道在這種情況下,iOS上MVC的最佳實踐使用情況。


更新:感謝您的答案。在我認爲將字體信息存儲在模型中的情況下,我決定採用「樣式模型」實現。爲了克服上面提到的困難,我簡單地爲兩個類別編寫了類別,請參閱this link

回答

1

我不希望在數據模型中存儲視圖相關信息,如字體,顏色等。我不會使用單獨的類來存儲所有樣式信息(該類可以從plist文件中讀取)。一般來說,應用中所有標籤,按鈕等的顏色和其他樣式屬性都是相同的。所以我想改變這個信息在一個地方,並想傳播它到每個標籤。該樣式信息與標籤顯示的數據無關。

的總結是,我會更喜歡數據和造型(你可以把它StyleModel,如果你想)的分離。很顯然,其他人可以選擇其他方式,這個決定也可能取決於應用程序的細節。 (Benoit的回答顯示了一個例子,其中風格的信息可能是數據模型的一部分。)

2

如果用戶(或外部輸入)可以選擇字體,它是模型的一部分。
您可以存儲字體名稱