如何在ForEach循环中为swift选择特定范围



我希望这不是一个非常愚蠢的问题,但我似乎想不通。我有一个有很多条目的数组,我想在选择器中显示一定范围的选项(比如从数组中的第二个项目到第五个(。我用ForEach循环完成了这项工作,但我不知道如何指定要运行的循环的确切范围。这是下面的一个示例代码,它运行但显示整个数组。感谢您的帮助

import SwiftUI
struct Plans: Identifiable {
var id = UUID()
var plan1: String
var plan2: String
var plan3: String
}
struct ContentView: View {
@State private var picked = ""

let goals = [
Plans(plan1: "A", plan2: "B", plan3: "C"),
Plans(plan1: "D", plan2: "D", plan3: "F"),
Plans(plan1: "F", plan2: "G", plan3: "H"),
Plans(plan1: "I", plan2: "J", plan3: "K"),
Plans(plan1: "L", plan2: "M", plan3: "N"),
Plans(plan1: "o", plan2: "P", plan3: "Q"),
Plans(plan1: "R", plan2: "S", plan3: "T"),
Plans(plan1: "U", plan2: "V", plan3: "W"),
Plans(plan1: "X", plan2: "Y", plan3: "Z")
]


var body: some View {
NavigationView {
Form {
Picker(selection: self.$picked, label: Text("Pick your plan")) {
ForEach(goals, id:.plan1)  { goal in
Text("(goal.plan1)").tag(goal.plan1)
}

}.id(UUID())
}
}
}
}

你可以做:

ForEach(2..<goals.count, id: .plan1) { goal in
Text("(goals[goal].plan1)")
.tag(goals[goal])
}

这就是你在swiftui中的操作方式。ViewBuilders中不允许使用For in循环。

for i in 2...5在swiftUI视图中不起作用,但这将:

ForEach(2...5, id: .self) { goal in
...
}