gpt4 book ai didi

ios - 检查结构是否在数组中

转载 作者:行者123 更新时间:2023-11-28 05:32:02 25 4
gpt4 key购买 nike

我有以下结构:

struct MyStrict {
let prop1: String
let prop2: [String: NSData]
let prop3: [String]

init (prop11: String, prop22: [String : NSData], prop33: [String]) {
prop1 = prop11
prop2 = prop22
prop3 = prop33
}
}

实例结构放在Array中。我需要做的是查找具有这些属性的结构是否在数组中。我需要比较数据。

像这样:

var arr = [MyStrict]()

var str1 = MyStrict(prop11: "test1", prop22: ["aa": NSData()], prop33: ["bb"])
arr.append(str1)

var str2 = MyStrict(prop11: "test2", prop22: ["bb": NSData()], prop33: ["cc"])
arr.append(str2)

var str3 = MyStrict(prop11: "test3", prop22: ["cc": NSData()], prop33: ["dd"])
arr.append(str3)

var str4 = MyStrict(prop11: "test1", prop22: ["aa": NSData()], prop33: ["bb"]) // has the same data as str1
arr.append(str4)

如您所见,str1str4 具有相同的数据。所以 str4 不应该添加到数组中。

我的问题是什么才是正确的做法?

最佳答案

您需要将协议(protocol) Equatable 添加到您的结构

struct MyStrict: Equatable {
...
}

然后你必须像这样在类下添加==运算符:

func == (lhs: MyStrict, rhs: MyStrict) -> Bool {
if lhs.prop1 == rhs.prop1 && lhs.prop3 == rhs.prop3 && lhs.prop2 == rhs.prop2 {
return true
}

return false
}

现在,要知道你的结构是否已经在数组中,你只需要使用这个:

if contains(arr, str4) == true {
println("already in")
} else {
println("Not in")
}

关于ios - 检查结构是否在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27579746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com