【发布时间】:2011-01-27 00:30:49
【问题描述】:
我遇到了这种情况:
var vector:Vector.<String> = new Vector.<String>();
vector.push("uno");
vector.push("dos");
vector.push("tres");
var serializer:ByteArray = new ByteArray();
serializer.writeObject(vector);
serializer.position = 0;
var vector2:Vector.<String> = serializer.readObject();
trace(vector2[0]);
trace(vector2[1]);
trace(vector2[2]);
当代码到达trace(vector2[0]); 语句时,我得到了这个错误:
TypeError: Error #1034: Type Coercion failed: cannot convert __AS3__.vec::Vector.<Object>@16820d01 to __AS3__.vec.Vector.<String>.
现在,如果我在声明vector 变量之前调用registerClassAlias("com.some.alias", String),代码执行没有问题。
为什么在这种情况下需要调用registerClassAlias()?
【问题讨论】:
-
自从我遇到类似问题以来已经有一段时间了,但是从
ByteArray反序列化的 iirc 对象总是作为无类型的Object对象返回。在这种情况下,我认为没有registerClassAlias()就无法让它工作。如果您有一个想要 [反] 序列化的自定义类,您可以添加 [RemoteClass] metatag 以提供所需的类型信息。 -
感谢您的重播。我在哪里可以找到有关“iirc 对象”的更多信息?在谷歌中找不到任何东西...
-
对不起,“iirc”=“如果我没记错的话”。你检查过
ByteArray#readObject()和registerClassAlias()的文档吗? -
贾贾。感谢“iirc”的定义。我将搜索更多关于这个主题的北斗七星。再次感谢
标签: apache-flex actionscript air