数组包含方法无法在自定义模型和谓词中正常工作



嗨,我最近在开发过程中遇到了一个奇怪的问题.native 包含无法正常工作。下面是我的代码。

struct Hello {
var name : String = ""
var address: String = ""
var phone : String = ""
init(name: String,address: String,phone: String) {
self.name = name
self.address = address
self.phone = phone
}
}

struct Buddy {
var phone : String = ""
var name: String = ""
var address: String = ""
init(name: String,address: String,phone: String) {
self.name = name
self.address = address
self.phone = phone
}
}

var a: [Hello] = []
a.append(Hello(name: "Gaurav", address: "Address1", phone: "123456"))
a.append(Hello(name: "Kumar", address: "Address2", phone: "123457"))
a.append(Hello(name: "Singh", address: "Address3", phone: "123"))

var b: Buddy = Buddy(name: "Pawan", address: "Address1", phone: "123")
if (a.contains(where: { $0.phone != b.phone})) {
print("doest not contain")
} else {
print(" contain")
}

实际结果: 打印("不包含"(

预期成果: 打印("包含"(

代码正确。

您正在检查

a是否包含电话号码不是123 的Hello

这很true,因为甚至有两个项目具有不同的电话号码

将最后一部分更改为:

if (a.contains(where: { $0.phone == b.phone})) {
print("contains")
} else {
print("does not contain")
}

它将返回正确的值。

最新更新