Swift 二进制运算符'===';无法应用于类型为';Self.Element';和';任何对象';
我得到以下错误:二进制运算符“==”不能应用于行中“Self.Element”和“AnyObject”类型的操作数:Swift 二进制运算符'===';无法应用于类型为';Self.Element';和';任何对象';,swift,sequence,swift4.1,xcode9.3,anyobject,Swift,Sequence,Swift4.1,Xcode9.3,Anyobject,我得到以下错误:二进制运算符“==”不能应用于行中“Self.Element”和“AnyObject”类型的操作数:返回包含{$0==object} 是否有方法将对象强制转换为迭代器.Element的类型?行where Iterator.Element:AnyObject是否意味着Iterator.Element必须表示为AnyObject extension Sequence where Iterator.Element: AnyObject { /** - Paramet
返回包含{$0==object}
是否有方法将对象
强制转换为迭代器.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 }
}
}
感谢您对此事的帮助。这是一个bug(实际上是一个回归)。它应该已经在Xcode 9.3.1中修复
只需从where
子句中删除迭代器
:
extension Sequence where Element: AnyObject {
func containsObjectIdentical(to object: AnyObject) -> Bool {
return contains { $0 === object }
}
}
虽然序列的Self.Element
和Self.Iterator.Element
是相同的,但编译器似乎看不到传递等式
也可以考虑使方法类型安全,只与类型< <代码>元素< /> >对象比较:
extension Sequence where Element: AnyObject {
func containsObjectIdentical(to object: Element) -> Bool {
return contains { $0 === object }
}
}
这是一个bug(实际上是一个回归)。它应该已经在Xcode 9.3.1中修复
只需从where
子句中删除迭代器
:
extension Sequence where Element: AnyObject {
func containsObjectIdentical(to object: AnyObject) -> Bool {
return contains { $0 === object }
}
}
虽然序列的Self.Element
和Self.Iterator.Element
是相同的,但编译器似乎看不到传递等式
也可以考虑使方法类型安全,只与类型< <代码>元素< /> >对象比较:
extension Sequence where Element: AnyObject {
func containsObjectIdentical(to object: Element) -> Bool {
return contains { $0 === object }
}
}
@Sulthan感谢您的帮助--这似乎解决了问题。@Sulthan感谢您的帮助--这似乎解决了问题。