Swift3.0 - 对象判等

Swift3.0 - 真的很简单
Swift3.0 - 数据类型
Swift3.0 - Array
Swift3.0 - 字典
Swift3.0 - 可选值
Swift3.0 - 集合
Swift3.0 - 流控制
Swift3.0 - 对象和类
Swift3.0 - 属性
Swift3.0 - 函数和闭包
Swift3.0 - 初始化和释放
Swift3.0 - 协议protocol
Swift3.0 - 类和结构体的区别
Swift3.0 - 枚举
Swift3.0 - 扩展
Swift3.0 - 下标
Swift3.0 - 泛型
Swift3.0 - 异常错误
Swift3.0 - 断言
Swift3.0 - 自动引用计数(strong,weak,unowned)
Swift3.0 - 检测API
Swift3.0 - 对象的标识
Swift3.0 - 注释
Swift3.0 - 元类型
Swift3.0 - 空间命名
Swift3.0 - 对象判等
Swift3.0 - 探究Self的用途
Swift3.0 - 类簇
Swift3.0 - 动态调用对象(实例)方法
Swift3.0 - 文本输出
Swift3.0 - 黑魔法swizzle
Swift3.0 - 镜像
Swift3.0 - 遇到的坑

  • 实现步骤

1.对象遵守协议Equatable
2.实现协议的方法

a.第一种写法 在类内部实现

class A :Equatable{
   var name:String?
    static func ==(lhs: A, rhs: A) -> Bool{
        return lhs.name == rhs.name
    }
}

b.第二种写法 将实现方法写到全局去

class A :Equatable{
   var name:String?
}

func ==(lhs: A, rhs: A) -> Bool{
    return lhs.name == rhs.name
}

c.你也可以使用扩展方式去实现协议

extension A: Equatable {
static func ==(lhs: A, rhs: A) -> Bool{
        return lhs.name == rhs.name
    }
}

运行下面代码:

let classa = A()
classa.name = "酷走天涯"
let classb = A()
classb.name = "酷走天涯"
if classa == classb {
    print("==")
}

运行结果:

==

友情提示:

如果对象没有实现Equatable 协议方法,系统不允许使用 == 进行判断,这是swift的严谨性

推荐阅读更多精彩内容