我有一些这样的代码:

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 of every element to be unique,而且,因为我基本上是对同一个项目进行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: " ") }

Swift相关问答推荐

如何消除SwiftUI中SF符号的填充

RealityKit如何获得两个相对大小相同的ModelEntity?

有没有一种方法可以迭代可编码的代码(例如,JSON解析中的每一项)?

SwiftUI:为什么@State在子视图中持续存在?

如何异步返回视图?什么?

如何根据 DatePicker 中选定的日期实现 TabView 页面切换?

减小SF符号的边框宽度

除法中如果除以完全因数需要更长时间吗?

如何使用 Swift 在非本地函数中切换()一个 Bool?

允许为 self 分配新的 struct 值的理由是什么?

Swift 数组拆分成重叠的块

将 Encodable 扩展添加到 Swift 嵌套枚举

如何在 switch case 模式语句中使用 Swift 文字正则表达式?

动画偏移正在 destruct 按钮 SwiftUI

如何使用 ISO 国家代码(2 个字母)查找区域设置标识符

数组使用偏移量对自身执行 XOR

带有屏幕参数的 NSWindow 初始化程序在初始化时导致致命错误

我如何从 UIAlertController 导航到新屏幕(swiftUI)

在 Swift 框架中加载资源(例如故事板)

如何在 GCD 中停止 DispatchWorkItem?