2

按照 MVC 范式在 Cocoa-Touch 中存储标签字体信息的最佳实践是什么?

在我的数据模型中,我想将自定义视图显示的信息存储为UILabels。很明显,标签文本属于数据模型。但是我应该在哪里存储相应的字体(在我的情况下还有颜色)信息?它们“属于”数据模型还是视图?

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

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


更新:感谢您的回答。在我认为在模型中存储字体信息有意义的情况下,我决定使用“样式模型”实现。为了克服上面提到的困难,我简单地为这两个类写了类别,见这个链接

4

2 回答 2

2

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

于 2010-10-27T11:39:26.117 回答
1

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

总结是我更喜欢数据和样式的分离(如果你愿意,你可以称它为 StyleModel)。显然其他人可以选择其他方式,并且决定也可能取决于应用程序的详细信息。(Benoît 的回答显示了一个示例,其中样式信息可能是数据模型的一部分。)

于 2010-10-27T11:51:56.737 回答