0

我收到以下错误:Binary operator '===' cannot be applied to type of 'Self.Element' and 'AnyObject' on the line: return contains { $0 === object }

有没有办法转换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 }
    }

}

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

4

1 回答 1

2

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

只需Iteratorwhere子句中删除:

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

虽然Self.ElementSelf.Iterator.ElementforSequence相同,但编译器似乎看不到传递相等性。

此外,您可能会考虑使方法类型安全,并且只与 type 的对象进行比较Element

extension Sequence where Element: AnyObject {
    func containsObjectIdentical(to object: Element) -> Bool {
        return contains { $0 === object }
    }
}
于 2018-05-14T09:06:55.533 回答