2011-03-22 4 views
1

Dans l'une des classes de mon application Flex, j'ai un dictionnaire, qui est périodiquement mis à jour à partir d'autres parties de l'application. Il contient certaines préférences de l'utilisateur et je souhaite le garder synchronisé avec un objet partagé local - le dictionnaire doit être lu pendant l'initialisation de la classe et sauvegardé dans le stockage local lorsqu'un élément est modifié, ajouté ou supprimé. L'objet "Dictionary" n'hérite que de "Object" et n'a pas d'événement de modification, comme "collectionChange" dans ArrayCollection. Je ne peux donc pas synchroniser le dictionnaire en écoutant un événement et en manipulant l'objet partagé dans le gestionnaire d'événements.Quelle est la meilleure façon de synchroniser un dictionnaire avec un objet partagé local?

L'autre solution possible serait de rendre le dictionnaire privé et de le manipuler en utilisant des méthodes spéciales dans ma classe. Quelque chose comme:

public function setValue(key:String, value:String):void 
public function getValue(key:String):String 
public function delValue(key:String):void 

Mais en utilisant les liaisons deviendra un véritable cauchemar et je vais devoir faire des changements dans beaucoup d'autres parties de l'application.

Comment voulez-vous synchroniser le dictionnaire avec le stockage local? Toutes les idées sont les bienvenues. Merci d'avance!

Répondre

1

Hum, problème intéressant. Personnellement, je pense que vous devrez réorganiser correctement votre structure de données en utilisant les propriétés finalisées au lieu des propriétés dynamiques. En attendant cependant, je pense que votre seule option sans complètement réécrire tout serait de définir une minuterie dans le dictionnaire qui s'exécute toutes les x secondes et se synchronise avec l'objet partagé. Ce n'est pas idéal pour plusieurs raisons, mais cela fonctionnera entre-temps jusqu'à ce que vous finalisiez un meilleur modèle de données pour votre application.

Questions connexes