arrays - Swift 3 - 二元运算符 '==' 不能应用于两个 'MyStruct' 操作数

标签 arrays swift filtering

这个问题在这里已经有了答案:





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/

相关文章:

arrays - 添加多个表格 View 时访问单元格原型(prototype)

arrays - 使用 Elixir 绘制数组的深度映射

ios - 如何处理在密码锁定的 iOS 设备上点击推送通知横幅?

powershell - Powershell-使用get-adcomputer时过滤OU

python - Python 是否有像 Ruby 的 %w(things in array) 这样创建数组的快捷方式

c++ - 如何在 C++ 中将动态数组转换为静态数组?

ios - DateFormatter 不返回 "HH:mm:ss"的日期

ios - 按日期和字符对核心数据属性进行排序

java - 具有过滤器链接的 ParallelStream

mysql - 无法在 WHERE 子句中使用 SELECT 子句的别名