Copia/clonación de un ArrayCollection
En lo que llevo de tiempo como desarrollador Flex (que es mas bien corto), siempre he estado bastante intrigado en el tema de copiar/clonar un ArrayCollection de una variable a otra. Normalmente utilizaba un script que utilizando Reflection recorría todos los items del ArrayCollection de origen y los iba colocando en el nuevo ArrayCollection. ¿Que pasaba cuando los items del ArrayCollection original tenían atributos que también eran ArrayCollections? pues en realidad nada, pero el script resultaba algo lento puesto que el bucle que se generaba tenía muchas iteraciones.
Hoy navegando por internet he encontrado un método que permite hacer esta clonación de manera mucho más rápida y sencilla.
public function cloneArrayCollections
(source:ArrayCollection):ArrayCollection{
var clone: ByteArray = new ByteArray ();
clone.writeObject (source);
clone.position = 0;
return ArrayCollection(clone.readObject());
}
La única pega, que por cierto es bastante importante, es que al crear el nuevo ArrayCollection, el tipo de los objectos que lo componen se pierde, y lo que obtenemos en el nuevo ArrayCollection es una colección de objectos Object.



Pues yo extendería un poco este método para que clonara todo lo que le echaras. Además si lo haces estático ya no tienes que instanciar la clase… :P
public static function clone(source:*):*
{
var clone:ByteArray = new ByteArray();
clone.writeObject (source);
clone.position = 0;
return clone.readObject();
}
Un saludo!
Alberto