swift报错binary operator '==' cannot be applied of two(结构体枚举如何比较大小)

刚才在写项目时,场景是这样的,封装监听网络状态的类,其中涉及几个枚举状态,联网(蜂窝数据,wifi),未联网,然后就涉及到了枚举状态的比较问题,我习惯性的直接用'=='进行比价,结果就显示一直报错,具体如下:


Binary operator '==' cannot be applied to operands of type 'HttpReachability.HttpStatus' and '_'


出现这样的错误,首先我检查下类中相关的属性,方法有没有哪里写错了,没有。 OK,百度,结果一堆没用的信息,翻墙,谷歌。还是谷歌靠谱,在stackoverflow上找到了答案,原因是在switf中只有类之间才可以用'=='来比较,而像枚举,结构体这样的值类型是不可以的,不过也是有办法的。

 重写相等协议Equatable

首先你需要遵循协议,一般在extension中。



接着就是自定义实现方法了,进入Equatable协议,发现就一个方法,复制粘贴,实现该方法



其中lhs和rhs就是你希望比较的两个枚举的类型,后面根据具体规则返回Bool。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值