Il y a 15 ans -
Temps de lecture 1 minute
Flex et les ArrayCollection
Lors du développement d’une application, j’ai été confronté à un problème avec Flex 2. Lors de la récupération du résultat du HTTPService sous forme de données XML, celui-ci est casté en ArrayCollection, mais lorsque la réponse envoyée par le HTTPService ne contient qu’un seul élément et que vous voulez créer une liste de type ArrayCollection, l’erreur suivante apparaît :
« cannot convert mx.utils::ObjectProxy@36fbf81 to mx.collections.ArrayCollection »
Le problème réside dans le fait que le moteur Flash essaye de convertir du XML en objet, et lorsque celui-ci ne repère qu’un seul élément, il ne le convertit pas en ArrayCollection. En effet, il n’est pas possible de savoir si un noeud XML représente une liste composée d’un élément ou bien un simple objet.
Cependant, il existe une solution : il suffit de gérer le cas où il n’y a qu’un seul élément. Je vous l’accorde ce n’est pas très élégant, mais il faut passer par ce test :
resultList est de type ArrayCollection
//Ne contient aucun élément if (httpService.lastResult.response.counts == null) { errortext.visible = true; //Contient un seul élément } else if (httpService.lastResult.response.counts is ObjectProxy) { resultList = new ArrayCollection([httpService.lastResult.response.counts]); //Contient n éléments } else { resultList = httpService.lastResult.response.counts as ArrayCollection; }
Vous pouvez trouver plusieurs manières de résoudre ce problème sur d’autres sites. Néanmoins, celle-ci est peut-être la plus élégante (non vous ne rêvez pas). En espérant que cette solution permette de faire gagner du temps à d’autres personnes.
Enjoy !
Commentaire
4 réponses pour " Flex et les ArrayCollection "
Published by Leonardo , Il y a 15 ans
That’s so great! Really solved my problem! Thanks for the tip! See you!
Published by Yvan , Il y a 15 ans
Merci beaucoup pour le tuyau! C’était excactement ça mon problème.