Swift初始化具有变量ID的重复值数组



我有一些类似的代码:

var myVariable = Array(repeating: CustomStruct(value: " "), count: 3))

其中CustomStruct如下所示:

struct CustomStruct: Hashable {
var id: UUID = UUID()
var value: String
static func == (lhs: CustomStruct, rhs: CustomStruct) -> Bool {
return lhs.id == rhs.id && lhs.value == rhs.value
}
}

myVariable的初始化工作正常,但存在一个问题,因为我希望每个元素的id都是唯一的,而且,因为我本质上是对同一项进行3个克隆,所以数组中每个元素的id都不是唯一的。

据我所知,我能解决这个问题的唯一方法就是使用暴力,比如:

[CustomStruct(value: " "), CustomStruct(value: " "), CustomStruct(value: " ")]

但我宁愿不这么做,因为这个例子已经最小化了,而且实际上我在数组中有大约30个单独的元素,所以这将是一个超长的变量声明。

我希望每个元素都是唯一的,因为我在SwiftUI中使用这个带有ForEach循环的数组,并且想做这样的事情:

ForEach(myVariable, id: .id) {_ in
// do stuff
}

而SwiftUI不会抱怨foreach循环中存在具有相同ID的元素。

我意识到一种方法是使用一些自定义逻辑通过init()调用中的数组进行初始化,但我想知道这里是否有其他/更标准的方法。

谢谢!

您可以尝试这种方法,对我有效:

var myVariable = Array(repeating: (), count: 3).map { CustomStruct(value: " ") }

最新更新