刚才在写项目时,场景是这样的,封装监听网络状态的类,其中涉及几个枚举状态,联网(蜂窝数据,wifi),未联网,然后就涉及到了枚举状态的比较问题,我习惯性的直接用'=='进行比价,结果就显示一直报错,具体如下:
Binary operator '==' cannot be applied to operands of type 'HttpReachability.HttpStatus' and '_'
出现这样的错误,首先我检查下类中相关的属性,方法有没有哪里写错了,没有。 OK,百度,结果一堆没用的信息,翻墙,谷歌。还是谷歌靠谱,在stackoverflow上找到了答案,原因是在switf中只有类之间才可以用'=='来比较,而像枚举,结构体这样的值类型是不可以的,不过也是有办法的。
重写相等协议Equatable
首先你需要遵循协议,一般在extension中。
接着就是自定义实现方法了,进入Equatable协议,发现就一个方法,复制粘贴,实现该方法
其中lhs和rhs就是你希望比较的两个枚举的类型,后面根据具体规则返回Bool。