这个问题在这里已经有了答案:
How to resolve "Binary operator '==' cannot be applied to two 'Foo' operands"?
(2 个回答)
4年前关闭。
我有一个自定义结构...
struct MyStruct {
let viewController: UIViewController
let view:UIView
init(viewController:UIViewController) {
self.viewController = viewController
}
}
我有一个数组,然后我想检查这个数组是否包含特定的结构......
let aStruct = someStruct
if structArray.filter { $0 == aStruct } {
print("do stuff")
}
但我收到错误二元运算符'=='不能应用于两个'MyStruct'操作数......首先,为什么我不能以这种方式过滤结构......其次,如果不是这个,我应该如何搜索数组大大地...
提前致谢
最佳答案
您需要结构符合 Equatable
协议(protocol),以允许它确定什么被认为是“平等的”。
假设您认为它们相等,如果它们具有相同的 viewController
属性(property),你可以做这样的事情:
extension MyStruct: Equatable{}
func ==(lhs: MyStruct, rhs: MyStruct) -> Bool {
return lhs.viewController == rhs.viewController;
}
关于arrays - Swift 3 - 二元运算符 '==' 不能应用于两个 'MyStruct' 操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41916105/