2010-10-27 79 views
2

什么是存储标签的字体信息在可可触摸以下的MVC模式的最佳实践?哪里存储标签字体信息 - 在模型或视图?

在我的数据模型,我想存储由一个自定义视图UILabel小号显示的信息。很明显的是,标签文本属于数据模型。但是我应该在哪里存储相应的字体(并且在我的情况下也是彩色的)信息?它们“属于”数据模型还是属于视图?

我问原因是这样的:如果我只是UIFont类的属性添加到我的数据模型,我将序列化和复制我的数据(因为UIFont没有实现NSCodingNSCopying协议)时遇到了麻烦,而我通常用于我的数据模型的其他类则可以。 (这个问题不存在UIColor,因为一个已经拥有NSCoding并且可以轻松地添加NSCopying,尽管人们仍然可以问,如果颜色应该“属于”的数据模型。)

一般来说,我想是能够序列化我的数据模型的所有属性,这似乎是MVC中非常常见和普遍的模式。当然,我也可以写一个字体信息的抽象,而不是直接使用UIFont作为我的数据模型中的一个属性。但是我想知道在这种情况下,iOS上MVC的最佳实践使用情况。


更新:感谢您的答案。在我认为将字体信息存储在模型中的情况下,我决定采用“样式模型”实现。为了克服上面提到的困难,我简单地为两个类别编写了类别,请参阅this link

回答

1

我不希望在数据模型中存储视图相关信息,如字体,颜色等。我不会使用单独的类来存储所有样式信息(该类可以从plist文件中读取)。一般来说,应用中所有标签,按钮等的颜色和其他样式属性都是相同的。所以我想改变这个信息在一个地方,并想传播它到每个标签。该样式信息与标签显示的数据无关。

的总结是,我会更喜欢数据和造型(你可以把它StyleModel,如果你想)的分离。很显然,其他人可以选择其他方式,这个决定也可能取决于应用程序的细节。 (Benoit的回答显示了一个例子,其中风格的信息可能是数据模型的一部分。)

2

如果用户(或外部输入)可以选择字体,它是模型的一部分。
您可以存储字体名称