我堅持的一個問題: 在這我序列化數組集合到一個文件中,該陣列採集有兩種類型物品的圖像和類對象。 它成功地序列化,但是當我去序列化,它只是返回對象的數組集合,我發現我自己無法將這些對象轉換爲圖像和類對象(這個類是由我自己有三個成員,兩個圖像定義和形狀)。如何反序列化數組集合在柔性
我加入,我使用的代碼:
[Bindable] var objcnvs:ClassCanvas;
protected function btnSave_clickHandler(event:MouseEvent):void
{
//for saving data serializaion
var arrAllSave:ArrayCollection = new ArrayCollection();
for(var i:int = 0;i<arrAll.length; i++)
{
try
{
var tempCon:ConnectImage = arrAll[i];
arrAllSave.addItem({item:arrAll[i], type:"ConnectImage" });
}
catch(er:Error)
{
var tempImage:Image = arrAll[i];
var objImage:ClassImage = new ClassImage(arrAll[i]);
arrAllSave.addItem({item:objImage, type:"Image" });
}
}
// First, generate your ByteArray from the VO.
var byteArray : ByteArray = new ByteArray();
byteArray.writeObject(arrAll);
// Resolve your file location.
//var file : File = File.applicationStorageDirectory.resolvePath("testFile.ri");
var mapName:String = txtMapTitle.text;
var file : File = File.applicationStorageDirectory.resolvePath('Saved Maps/'+mapName+'.imm');
if(file.exists == true)
{
lblWarn.text = "Map already Exists. Please enter Defferent Map Title";
}
else if(mapName == "")
{
lblWarn.text = "Please enter a title for Map.";
}
else
{
var fileStream:FileStream = new FileStream();
// Save the file to the given location.
fileStream.open(file, FileMode.WRITE);
fileStream.writeBytes(byteArray);
fileStream.close();
lblWarn.text = "Map Saved successfully";
}
}
protected function btnLoadMap_clickHandler(event:MouseEvent):void
{
// Execute the file load.
var loadFileName:String = "t1";
var request : URLRequest = new URLRequest ("app-storage:/"+"Saved Maps/"+loadFileName+".imm");
var receptor : URLLoader = new URLLoader(request);
// Make sure our content is interpreted as a ByteArray.
receptor.dataFormat = URLLoaderDataFormat.BINARY;
receptor.addEventListener(Event.COMPLETE, fileLoadedHandler);
}
private function fileLoadedHandler (event : Event) : void
{
// Retrieve the event target, cast as the URLLoader we just created
var loader : URLLoader = event.target as URLLoader;
// Retrieve the loaded data. We know it's a ByteArray, so let's cast it as well.
var data : ByteArray = loader.data as ByteArray;
// Use the ByteArray.readObject method to reconstruct the object.
var obj : Object = data.readObject();
// Cast the object and assign it to our data container.
var loadArrAll:ArrayCollection = obj as ArrayCollection;
}
最後一行
var loadArrAll:ArrayCollection = obj as ArrayCollection;
這是問題。我得到的數組集合,但它只有一個對象沒有圖像,沒有我的類對象的名單(雖然這些是有,但我發現沒有辦法這個數組集合轉換在以前的形式,當我序列化它。)
我發現了一些 '[遠程類的別名=(...)'。一些這樣的事情有人可以告訴我,我可以如何使用它與我的問題。 – Zain
嗨,你能舉出一些示例代碼?對象在調試模式下是否有正確的變量? – Ryan
並非一切都爲那些沒有你編寫代碼自己類自動序列化(您註冊您的評論中已經添加了以上內容的別名。 –