【发布时间】:2011-09-08 03:46:00
【问题描述】:
我在反序列化 Flex 4.5 Mobile 项目中的对象时遇到了特殊问题。我已经很好地连接到了 Web 服务并很好地填充了 ListBox。我也可以选择项目并获取详细信息,但是在序列化对象并尝试反序列化它之后;对象定义在某处丢失。
当用户在列表中选择请求时,我有一个变量
private var selectedReq:ServiceRequest;
//Here we instantiate the local variable when user select id in ListBox
selectedReq = event.currentTarget.selectedItem as ServiceRequest;
用户选择保存的每个服务请求都会调用此方法。
private function writeServiceRequest():void {
var filename:String = buildFileName();
var file:File = File.applicationStorageDirectory.resolvePath(filename);
if (file.exists)
file.deleteFile();
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.WRITE);
//selectedReq is the private var of the users selected item
fileStream.writeObject(selectedReq);
fileStream.close();
}
当用户想要查看请求时,调用此方法。
private function readServiceRequest():ServiceRequest {
var filename:String = buildFileName();
var file:File = File.applicationStorageDirectory.resolvePath(filename);
if (!file.exists) {
return null;
}
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.READ);
var objReq:ServiceRequest = fileStream.readObject() as ServiceRequest;
fileStream.close();
return objReq;
}
类对象类似于。
public var id:uint;
public var requisitioner:String;
public var requestItems:ArrayCollection //Webservice it's actually List<requestItems>
public var requestProcesses:ArrayCollection // WSDL it's actually List<>
当我尝试读取/反序列化时
//This line is null but the file exist and the object was written
var objReq:ServiceRequest = readServiceRequest() as ServiceRequest;
if(objReq) {
selectedReq = objReq;
}
如果我不将 readServiceRequest() 转换为 ServiceRequest 并简单地返回一个对象;我可以遍历 Object 并获得从序列化对象返回的正确值。
我只能假设 Flex 从 Web 服务创建的类可能会导致这种情况?如果值被写入而不是对象类型,那么在序列化中必须丢失一些东西 - 对吗?
抱歉所有细节,但我此时有点迷失......任何帮助将不胜感激。
强化学习
【问题讨论】:
-
很确定你不能像返回的对象只是类型转换为动态对象那样类型转换它。
标签: actionscript-3 flex4 flash-builder