二进制运算符'==='不能应用于'Self.Element'和'AnyObject'类型的操作数

时间:2018-05-14 09:02:40

标签: swift sequence swift4.1 xcode9.3 anyobject

我收到以下错误:二进制运算符'==='无法应用于行上的'Self.Element'和'AnyObject'类型的操作数:return contains { $0 === object }。< / p>

有没有办法将object投射到Iterator.Element的类型?第where Iterator.Element: AnyObject行不代表Iterator.Element必须可以表示为AnyObject吗?

extension Sequence where Iterator.Element: AnyObject {

    /**
     - Parameter object:
     */
    func containsObjectIdentical(to object: AnyObject) -> Bool {
        return contains { $0 === object }
    }

}

感谢您对此事的任何帮助。

1 个答案:

答案 0 :(得分:2)

这是一个错误SR-7275(实际上是回归)。它应该已经在Xcode 9.3.1中修复。

只需从Iterator子句中删除where

extension Sequence where Element: AnyObject {
    func containsObjectIdentical(to object: AnyObject) -> Bool {
        return contains { $0 === object }
    }
}

虽然Self.Element的{​​{1}}和Self.Iterator.Element相同,但似乎编译器无法看到传递相等。

此外,您可以考虑使方法类型安全,只与Sequence类型的对象进行比较:

Element