2014-09-22 50 views
0

与RemoteClass创建类metateg的Flex - 节省的对象的序列化的ArrayCollection到文件

[RemoteClass] 
public class Result 
{ 
    public function Result(){} 
} 

功能在文件中写入

public function writeData(object:Object):void 
{ 
    var file:File = File.desktopDirectory.resolvePath("data.txt"); 
    if (file.exists) 
     file.deleteFile();  
    var fileStream:FileStream = new FileStream(); 
    fileStream.open(file, FileMode.WRITE); 
    fileStream.writeObject(object); 
    fileStream.close(); 
} 

功能从文件中读取

public function readData():Object 
{ 
    var file:File = File.desktopDirectory.resolvePath("data.txt"); 
    if(!file.exists) 
     return 0; 
    var fileStream:FileStream = new FileStream(); 
    fileStream.open(file, FileMode.READ); 
    var obj:Object = fileStream.readObject(); 
    fileStream.close(); 
    return obj; 
} 

功能时,应用程序初始化

public function initApplication():void 
{ 
    writeData(new Result()); // write object to file. 
    var result:Result = readData() as Result; // create Result class object and initializing it data from file 
    var array:ArrayCollection = new ArrayCollection(); // create collection and fill it objects of Result class 
    array.addItem(new Result()); 
    array.addItem(new Result()); 
    array.addItem(new Result()); 
    writeData(array); // writing collection in file 
    var arr:ArrayCollection = readData() as ArrayCollection; // initializing new collecion of collection from file. 
} 

这是问题所在。用对象类型的对象返回集合。 如何获取Result类型对象的集合?下面

for each (var object:Object in arr) 
{ 
     object = object as Result; 
} 

回答

2

使用registerClassAlias() 糟糕的方式之前,序列化/反序列化

+0

我可以得到结果只有一个类的实例,但不能得到结果对象的数组保藏。 – dkhmarnyi 2014-09-22 12:15:06

+0

尝试注册ArrayCollection。据我所知,只有几种类型可能不需要注册。 – Ingweland 2014-09-22 12:39:22

+0

非常感谢! RegisterClassAlias()或[RemoteObject] metateg可以工作! – dkhmarnyi 2014-09-22 15:18:05