【发布时间】:2020-08-08 18:13:42
【问题描述】:
所以我有一个Dice 的结构,它附加了一些属性。我希望能够将它们全部加在一起,这样我就有了一个干净的价值。这是结构:
struct Dice: Identifiable, Hashable {
var id = UUID()
var displayValue: String
var initialValue: Int
var endingValue: Int
mutating func roll() {
let randomInt = Int.random(in: initialValue..<endingValue)
displayValue = "\(randomInt)"
print("Initial: \(initialValue), EndingValue: \(endingValue), Display: \(displayValue)")
}
}
它们存储在此处的数组中:@State var viewArray: [Dice] = [],然后显示在此处的 ForEach 中:
ForEach(0..<viewArray.count, id: \.self) { index in
DiceView(dice: viewArray[index])
.onTapGesture {
self.viewArray.remove(at: index)
withAnimation(.spring()) {
}
}
}
我想做的事情是抓住viewArray 中每个项目的displayValue 并将它们加在一起。这样做的最佳方法是什么?我假设我需要根据displayValue 的属性创建某种数组,然后将该数组相加,但我还没有遇到过。
【问题讨论】:
-
所以你想从数组中的所有 displayValue 字符串中创建一个字符串,我建议
map将属性放入一个数组,然后joined从数组中创建一个字符串 -
哎呀!那是我的错,
displayValue实际上应该是Int但基本上是的。我将如何使用 map 直接获取 displayValue 属性?我看到的示例仅用于获取直接值,但由于我的数组是自定义类型,我如何映射自定义值? -
不确定我是否遵循,
map的主要用途是获取单个属性。也许你应该阅读使用map。