我的 Flex 项目中有一个名为 HashMap 的便利集合类,它本质上是 flash.utils.Dictionary 的包装器,带有一堆便利方法和一个添加的(同步的)ArrayCollection,以便我可以将 HashMap 传递给需要的可绑定控件一个数组集合。这一切都很好。
我刚刚发现,不能正常工作的是将 HashMap 放在本地 SharedObject 中。
注册该类会导致它被存储并作为正确的类型返回,并且 ArrayCollection 成员很好地返回,但是 Dictionary 不存储它的数据..
这是一个片段:
[RemoteClass(alias="com.tamedtornado.collections.HashMap")]
public class HashMap extends Proxy
{
public var hash:Dictionary = new Dictionary();
// Keeps an array collection as well so we can give this to a data bound control
[Bindable]
public var collection:ArrayCollection = new ArrayCollection();
这就是相关的东西。让 Dictionary 正确存储自身的过程是什么?实际上,我必须使 ArrayCollection 瞬态,因为现在每次刷新 SO 时,我都会获得(在字典中唯一键入的)数据的另一个副本。