我有一些类似的代码:
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: " ") }