我是swift 的新手(但不是新编码的),所以我对此有点了解。我使用Kanna,但如果我有两个XMLElements node1和node2,我写道:
let result = node1 === node2
我得到"二元运算符===
不能应用于两个' XMLElement'操作数&#34 ;.这种比较是否可能与其他语法相比,如果不可能,那么为什么以及什么是最好的解决方法(我可以考虑比较innerHTML,它几乎在所有情况下都可以工作但看起来效率低下)?
答案 0 :(得分:1)
XMLElement (来自Kanna)是一个协议而不是类,并且它不符合 Comparable / Equatable协议负责比较 http://mgrebenets.github.io/swift/2015/06/21/equatable-nsobject-with-swift-2/
' ==='检查两个对象引用是否引用同一个对象实例。这是通过比较对象的地址而不是值来完成的。你可以拥有与' ==='相同的功能。使用下面的代码::
func isIdentityObject(firstObject:XMLElement, withObject:XMLElement) -> Bool {
let p1 = unsafeAddressOf(firstObject as! AnyObject)
let p2 = unsafeAddressOf(withObject as! AnyObject)
return (p1 == p2)
}
...
let result = isIdentityObject(node1, withObject: node2)