質問

MVC パラダイムに従って Cocoa-Touch にラベルのフォント情報を保存するためのベスト プラクティスは何ですか?

私のデータモデルでは、カスタムビューによって表示される情報を次のように保存したいと考えています。 UILabels.明らかに、 ラベルのテキスト データモデルに属します。しかし、対応するフォント (私の状況では色も) 情報はどこに保存すればよいでしょうか?それらはデータ モデルに「属している」のでしょうか、それともビューに「属している」のでしょうか?

私が尋ねる理由は次のとおりです。単にクラスのプロパティを追加する場合 UIFont 私のデータ モデルに合わせると、データをシリアル化してコピーするときに問題が発生します ( UIFont は実装しません NSCoding そして NSCopying プロトコル)、データ モデルに通常使用する他のクラスは使用します。(問題は存在しません UIColor すでに持っているものがあるので NSCoding 簡単に追加できます NSCopying, ただし、色がどうかを尋ねることもできます。 すべき データ モデルに「属している」)。

一般に、データ モデルのすべてのプロパティをシリアル化できるようにしたいと考えていますが、これは MVC では非常に一般的で一般的なパターンのようです。もちろん、フォント情報を使用する代わりに、フォント情報の抽象化を記述することもできます。 UIFont データモデルのプロパティとして直接。しかし、このような場合、iOS で MVC を使用するベスト プラクティスは何だろうかと思います。


アップデート: ご回答ありがとうございます。フォント情報をモデルに保存することが合理的であると考えられる場合には、「スタイル モデル」の実装を採用することにしました。上記の困難を克服するために、2 つのクラスのカテゴリを単純に作成しました。を参照してください。 このリンク.

役に立ちましたか?

解決

フォント、色などのビュー関連情報は保存しないことを好みます。データモデルで。代わりに、すべてのスタイル情報を保存するために別のクラスを使用します (そのクラスは plist ファイルから読み取ることができます)。一般に、すべてのラベル、ボタンなどの色およびその他のスタイルプロパティ。アプリ内でも同様になります。したがって、この情報を 1 か所で変更し、それをすべてのレーベルに伝達したいと考えています。このスタイル情報は、ラベルが表示しているデータとは何の関係もありません。

要約すると、私はデータとスタイルを分離することを好むということです (必要に応じて、これを StyleModel と呼ぶこともできます)。明らかに、他の人が別の方法を選択することもでき、その決定は申請の詳細に依存する場合もあります。(Benoit の答えは、スタイル情報がデータ モデルの一部である可能性がある例を示しています。)

他のヒント

ユーザー (または外部入力) がフォントを選択できる場合、それはモデルの一部です。
フォント名を保存できます

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top