我想使用 ObjectUtil.compare() 比较两个字典。当字典相同时(两个不同的实例,但内容相同),比较失败并出现奇怪的异常:
Error #1034: Type Coercion failed: cannot convert "some_key" to QName.
这里有一些代码让它更清楚。
主.mxml
<?xml version="1.0" encoding="utf-8"?>
<local:MainTest xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:local="*"/>
主测试.as
package {
import spark.components.Application;
import flash.utils.Dictionary;
import mx.utils.ObjectUtil;
public class MainTest extends Application {
public function MainTest() {
super();
trace(ObjectUtil.compare(getMyDictionary(), getMyDictionary()));
}
private function getMyDictionary() : Dictionary {
var myDictionary : Dictionary = new Dictionary();
myDictionary["oranges"] = "orange";
myDictionary["kiwis"] = "green";
return myDictionary;
}
}
}
如您所见,构造函数调用ObjectUtil.compare
了两个字典。该getMyDictionary()
方法显然每次都返回新的、相同的字典(当然,不同的实例,但它们是相同的)。当代码到达 时ObjectUtil.compare()
,调试器会打印以下错误:
Error #1034: Type Coercion failed: cannot convert "oranges" to QName.
为什么要将“oranges”键与 QName 进行比较?
注意:如果我调用ObjectUtil.compare
提供与参数相同的实例,它可以正常工作。我的意思是,如果我将 的返回值保存getMyDictionary()
到变量中myDict
并调用ObjectUtil.compare(myDict, myDict)
,则不会出现错误,并且比较会通过。
任何人都可以解释一下吗?我做错了吗?