无法迭代flash.utils.Dictionary中的键

时间:2014-09-22 14:40:19

标签: actionscript-3 flash dictionary

我想迭代字典中的键,我看了看:

Efficient looping through AS3 dictionary

我使用以下代码填充字典:

arguments = new Dictionary();
for each(var entry:XML in bean.child("entry"))
{
    var key:String = entry.@key.toString();
    value = instantiate(entry.children()[0]);
    arguments[key] = value;
}

然后将'arguments'字典传递给另一个尝试迭代该数组中的键的方法:

for (var key:Object in arguments)
{
    retval[key] = arguments[key.toString()];
}

无论我对这些循环做什么,我都无法让第二个循环的主体执行。

我已经通过调试器验证了'arguments'包含正确的条目。

2 个答案:

答案 0 :(得分:0)

我尝试了一些测试代码:

private function createDict():void {
    var dict:Dictionary = new Dictionary();

    for (var j:int = 0; j < 5; j++) {
        dict[j.toString()] = new Sprite();
    }

    parseDict(dict);
}

private function parseDict(source:Dictionary):void {
    for (var key:Object in source) {
        trace(key + source[key].toString());
    }
}

输出:

[trace] 0[object Sprite]
[trace] 1[object Sprite]
[trace] 2[object Sprite]
[trace] 3[object Sprite]
[trace] 4[object Sprite]

所以它按预期工作。因此,您需要检查,在您的“parseDict”函数中,您的字典仍然有效(可能在某处已损坏)。另外,检查你的钥匙 - 可能是他们的问题。

答案 1 :(得分:0)

应该知道它会变成一个愚蠢的闪光技巧......

for (var key:Object in this.arguments)
{
    retval[key] = this.arguments[key.toString()];
}

工作正常。