我想迭代字典中的键,我看了看:
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'包含正确的条目。
答案 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()];
}
工作正常。