Est-il possible de supprimer un Flex flash.utils.Dictionary
? J'ai un Dictionary
que je veux effacer (enlever tous les éléments).Effacer un dictionnaire Flex ActionScript
Répondre
Je ne crois pas qu'il existe une commande claire explicite.
Cependant, vous pouvez écrire votre propre qui boucle à travers toutes les clés et exécuter ce
delete dict[key];
Ou vous pouvez simplement réassigner
dict = new Dictionary()
Je pense cela fonctionnera, mais je Je ne suis pas sûr à 100%, car vous modifiez le dictionnaire en le répétant:
function clear(d:Dictionary):void {
for(var id:* in d) {
delete d[id];
}
}
Cependant, je crée généralement un nouveau dictionnaire chaque fois que je dois en effacer un (bien que s'il est référencé à plusieurs endroits, cela pourrait ne pas fonctionner pour vous).
+1 fonctionne. testé en parcourant deux fois, il était vide après la première exécution. –
Le code ci-dessus a un défaut: 'id' doit être de type NO, car un dictionnaire peut contenir n'importe quel type d'objet en tant que référence clé et pas seulement une chaîne comme le font les objets dynamiques. Le code ci-dessus supprimerait SEULEMENT les références de chaînes! –
J'ai édité la réponse pour corriger le défaut. id est maintenant non typé (*), donc il peut prendre n'importe quel type et effacer toutes les clés possibles. Quand il a été tapé comme une chaîne, id ne ferait que effacer les clés de chaîne; de plus, aucune erreur n'est levée, et id n'est pas nul pour les clés non-string, elles sont simplement ignorées pendant l'itération. Donc id doit être non typé pour itérer sur toutes les clés possibles. – Triynko
Non seulement vous devez vous assurer que la clé est de type objet ou * vous devez d'abord récupérer les clés, puis les supprimer du dictionnaire. Sinon, vous finirez par une clé restante dans le dictionnaire (la dernière).
Je me souviens du code ci-dessus qui fonctionnait avant mais qui a récemment changé avec la dernière itération de Flash Player.
Ce code garantit qu'ils sont tous supprimés, y compris le dernier.
//Clean up the dictionary
var keys:Array = [];
var key:*;
for (var key:* in dictionary)
keys.push(key);
for each (var key:* in keys)
delete dictionary[ key ];
Pour supprimer tous les éléments dans le dictionnaire, boucle à travers chaque touche et utiliser le mot-clé de suppression
function clear(dict:Dictionary):void
{
for(var key:Object in dict)
{
delete dict[key];
}
}
Si vous voulez être sûr à 100% que vos clés supprimées sont les déchets collectés, vous devez remplacez votre instance de dictionnaire par un nouveau dictionnaire. Une fois, j'ai eu un objet Dictionnaire avec 3 millions de chaînes comme clés. Ces chaînes ne seraient collectées que lorsque l'instance du dictionnaire lui-même l'était.
Just:
dictionary = new Dictionary()
public static function clear(dict:Dictionary):void {
var key:*
for(key in dict) {
delete dict[key];
}
}
Utilisez la fonction ci-dessus en fonction de l'utilité et vous pouvez l'utiliser tout au long de votre base de code.
- 1. flex Dictionnaire dataProvider?
- 2. Checkstyle for ActionScript (Flex)
- 3. Flex - Effacer DateField par programmation
- 4. Flex Dictionnaire Tri
- 5. Effacer DateField dans Flex 3
- 6. débogage Flex ActionScript singleton
- 7. Obtenir une clé dans le dictionnaire ActionScript
- 8. base dans Flex et ActionScript
- 9. Flex/Actionscript Blanc à Transparent
- 10. FLEX/amfPHP ActionScript erreur 2048
- 11. Syntaxe Flex 4 dans ActionScript ...?
- 12. Encode HTML dans Flex/Actionscript
- 13. Flex/Actionscript: Dynamiquement accès var
- 14. Comment un fichier tronqué peut-il utiliser ActionScript (flex)?
- 15. Comment créer un 'événement global' dans actionscript/flex?
- 16. Flex/ActionScript Possibilité d'ajouter un tableau vide à URLVariables
- 17. FLEX, Actionscript: comment puis-je appeler un CustomEvent?
- 18. Timers et thread dans Flex 3 ActionScript
- 19. Flex/Actionscript: Impossible d'ajouter le fichier archive
- 20. Comment effacer une zone dans un objet BitmapData?
- 21. Conversion chaîne à uint en actionscript/Flex
- 22. Flex: ActionScript Taille du projet Problème
- 23. Essayer de comprendre l'AsyncToken dans Flex/Actionscript
- 24. Création dynamique de composants Flex dans ActionScript
- 25. Flex/Actionscript truncateToFit sur le composant d'étiquette
- 26. Histoire d'un bug mystérieux Flex/Actionscript
- 27. Flex/ActionScript Erreur de type # 1034
- 28. Bluetooth SPP d'Adobe Actionscript (Flex Framework), comment?
- 29. Flex bug essayant d'importer des fichiers actionscript
- 30. ActionScript flex: Conversion de # couleurs en uint
Mon but était de réutiliser le 'Dictionary' au lieu d'en créer un nouveau. –