class - 在 Swift 中比较一个对象的两个实例

标签 class swift object comparison

给定以下类,如何将两个实例中的所有值相互比较?

// Client Object
//
class PLClient {
    var name = String()
    var id = String()
    var email = String()
    var mobile = String()
    var companyId = String()
    var companyName = String()

    convenience init (copyFrom: PLClient) {
        self.init()
        self.name =  copyFrom.name
        self.email = copyFrom.email
        self.mobile = copyFrom.mobile
        self.companyId = copyFrom.companyId
        self.companyName = copyFrom.companyName

    }

}

var clientOne = PLClient()

var clientTwo = PLClient(copyFrom: clientOne)

if clientOne == clientTwo {   // Binary operator "==" cannot be applied to two PLClient operands
    println("No changes made")
} else {
    println("Changes made. Updating server.")
}

这个用例是在一个从服务器呈现数据的应用程序中。一旦数据被转换为对象,就会生成该对象的副本。用户能够编辑各种字段等。这会更改其中一个对象中的值。

可能已更新的主对象需要与该对象的副本进行比较。如果对象相等(所有属性的值都相同),则什么也不会发生。如果任何值不相等,则应用程序将更改提交给服务器。

如代码示例所示,== 运算符未被接受,因为未指定值。使用 === 不会达到预期的结果,因为它们始终是两个独立的实例。

最佳答案

表明你的类符合Equatable协议(protocol),然后实现==运算符。

像这样:

class PLClient: Equatable 
{
    var name = String()
    var id = String()
    var email = String()
    var mobile = String()
    var companyId = String()
    var companyName = String()
    //The rest of your class code goes here

    public static func ==(lhs: PLClient, rhs: PLClient) -> Bool{
        return 
            lhs.name == rhs.name &&
            lhs.id == rhs.id &&
            lhs.email == rhs.email &&
            lhs.mobile == rhs.mobile &&
            lhs.companyId == rhs.companyId &&
            lhs.companyName == rhs.companyName
    }
}

关于class - 在 Swift 中比较一个对象的两个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30105272/

相关文章:

java - 用 Scala 继承 'object'

javascript - 将动态字符串转换为 JavaScript 中的逻辑表达式

python - 使用来自不同文件 pygame 的 Sprite 对象类

javascript - 使用 JavaScript 添加类

c++ - 如何在类中初始化动态数组?

c++ - 一个类(class)的规模限制是多少?

javascript - 有效评估 JavaScript 对象是否包含字符串

ios - 我的服务器是否支持 ipv6,以便在我使用 ipv6 互联网时能够获取数据

ios - 在 IOS 项目中放置 .txt 文件并从中读取的位置

ios - 如何清除 URLSession/URLConfiguration 存储的缓存数据?