我收到以下错误:二进制运算符'==='无法应用于行上的'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 }
}
}
感谢您对此事的任何帮助。
答案 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