ios - 如何比较两个 Struct 对象?

标签 ios swift

<分区>

对于具有不同值的同一个结构类,我有两个对象。我需要比较这两个对象是否相等。请指导我找到合适的解决方案。

struct CustomerInfo {
   var billAddressCity: String?

   init(a:String?){
      billAddressCity = a

  }
}

 /* init object */
 var obj1 =  CustomerInfo?
 var obj2 =  CustomerInfo?

 obj1 = CustomerInfo(a: "ONE")
 obj2 = CustomerInfo(a: "TWO")

 /*  I need to compare these two objects */

 if obj1 == obj2 {
     Print(equal values)
  }

这不是我要找的答案,因为它说我需要手动比较字段的每个值, Compare two instances of an object in Swift

最佳答案

在面向对象的世界中,一般来说,所有对象都是彼此唯一的。

那么,我该如何比较两个对象呢?

你的结构/类需要实现 Equatable 协议(protocol),它让你定义一个对象如何与同一类/结构的另一个对象相等

让我们从这个 House 结构开始:

struct House {
    var street: String
}

var houseA = House.init(street: "street A, n. 10")
var houseB = House.init(street: "street A, n. 10")

houseA == houseB // of course you can't

使用 Equatable 协议(protocol),您可以实现 static func ==。在这里,您可以定义当您使用运算符 == 时,同一类的两个对象如何相等。

在我的示例中,结构 House 的两个对象在拥有相同的街道时可能是相等的:

struct House: Equatable {
    var street: String

    static func == (lhs: House, rhs: House) -> Bool {
        return lhs.street == rhs.street
    }
}  

var houseA = House.init(street: "street A, n. 10")
var houseB = House.init(street: "street A, n. 10")

houseA == houseB // now print true

关于ios - 如何比较两个 Struct 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46074718/

相关文章:

ios - 如何使用自动布局调整 ScrollView 内容大小

ios - 每个星期二的本地通知重复间隔不起作用..我错过了什么?

ios - Facebook 共享不起作用

ios - Objective-C 中的 cURL 请求 (POST)

swift - 当模态视图(第二个 VC)关闭时刷新 ViewController 中的核心数据

swift - 在 Swift 中更改定时器选择器函数中的 userInfo

iphone - 特定索引后升序

ios - 初始化后在 UITextField 的子类上设置 rightview

swift - Scene Kit Swift 节点多次旋转

swift 3 : How to get text from individual textfields that are in different collectionView cells?