Question

Quelle est la meilleure pratique pour stocker des informations de police d'étiquettes à Cocoa-Touch suivant le paradigme MVC?

Dans mon modèle de données que je souhaite stocker des informations qui sont affichées par une vue personnalisée comme UILabels. Il est évident que le texte de l'étiquette appartient au modèle de données. Mais où dois-je stocker la police correspondante (et dans ma situation aussi la couleur) des informations? Ont-ils « appartiennent » au modèle de données ou plutôt à la vue?

La raison pour laquelle je demande est la suivante: Si j'ajoute simplement une propriété de classe UIFont à mon modèle de données, je vais avoir des ennuis lors de la sérialisation et la copie de mes données (depuis UIFont ne met pas en œuvre les protocoles de NSCoding et NSCopying), alors que les autres classes que j'utilise habituellement pour mes modèles de données font. (Le problème n'existe pas pour UIColor puisque l'on a déjà NSCoding et peut facilement ajouter NSCopying, bien que l'on pourrait encore demander si la couleur devrait « appartiennent » au modèle de données.)

En général, je voudrais pouvoir sérialiser toutes les propriétés de mes modèles de données et cela semble être un modèle très commun et général dans MVC. Bien sûr, je pourrais aussi écrire une abstraction des informations sur la police plutôt que d'utiliser UIFont directement comme propriété dans mon modèle de données. Mais je me demande quelle est la meilleure utilisation de la pratique de MVC sur iOS est dans ce cas.


Mise à jour: Merci pour les réponses. J'ai décidé d'aller avec la mise en œuvre du « modèle de style » dans les cas où je crois qu'il est logique de stocker des informations de police dans les modèles. Afin de surmonter la difficulté mentionnée ci-dessus j'ai simplement écrit catégories pour les deux classes, consultez ce lien .

Était-ce utile?

La solution

Je préfère ne pas stocker des informations relatives vue comme la police, la couleur, etc. dans le modèle de données. Plutôt que je vais utiliser une classe séparée pour stocker toutes les informations de style (Cette classe peut lire un fichier plist). En général, la couleur et d'autres propriétés de style de toutes les étiquettes, boutons etc. dans l'application seront identiques. Donc, je veux changer cette information en place simple et que vous souhaitez propager sur chaque étiquette. Cette information styling n'a rien à voir avec les données les étiquettes montrent des signes.

Le résumé est je préfère la séparation des données et le style (vous pouvez l'appeler StyleModel, si vous voulez). Il est évident que d'autres personnes peuvent choisir autrement, et la décision peut également dépendre des modalités d'application. (Spectacles de réponse de Benoît un exemple où les informations de style pourrait être une partie du modèle de données.)

Autres conseils

Si l'utilisateur (ou entrée externe) peuvent sélectionner la police, il fait partie du modèle.
Vous pouvez enregistrer le nom de la police

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top