我正在構建一個應用程式,顯示公司內不同部門的公司“x”工資率。我遇到的問題是能夠創建一個 ForEach 來遍歷所有工資率陣列資料。目前,當您單擊“開發”、“培訓”或“營銷”時,顯示的工資率是針對“開發”的。“培訓”和“營銷”的較高工資率不會顯示。我的模型資料被組織成陣列([rates])的陣列([Dept])。我找不到任何解釋如何在陣列中迭代陣列的檔案或教程。
這是我的 PayRateDetailView:
struct RateDetailView: View {
var dept: Dept
var body: some View {
List {
ForEach(dept.rates) { line in
RateCardView(dept: dept)
}
}
.navigationTitle(dept.deptName)
}
}
這是我的 RateCardView:
struct RateCardView: View {
var dept: Dept
var body: some View {
ForEach(dept.rates) { rate in
HStack {
Text("Year \(rate.year)")
Spacer()
Text("$ \(rate.shiftWorkerRate, specifier: "%.2f")")
Spacer()
Text("$ \(rate.managerRate, specifier: "%.2f")")
}
}
}
}
這是我的 PayRateView:
struct PayRateView: View {
var depts: [Dept]
var dept: Dept
var body: some View {
List {
ForEach(depts, id: \.deptName) { name in
NavigationLink(destination:
RateCardView(dept: dept)) {
Label(name.deptName, systemImage: "person")
}
}
}
}
}
我認為我的問題的答案可能是找到一種更好的方法來顯示我的工資率模型資料,但這是最適合我試圖顯示的結構:
struct Dept: Identifiable {
let id: UUID
var deptName: String
var rates: [HourlyRates]
init(id: UUID = UUID(), deptName: String, rates: [HourlyRates]) {
self.id = id
self.deptName = deptName
self.rates = rates
}
}
extension Dept {
static let deptList: [Dept] = [
Dept(deptName: "Development", rates: [
HourlyRates(year: 1, shiftWorkerRate: 10, managerRate: 20),
HourlyRates(year: 2, shiftWorkerRate: 11, managerRate: 21),
HourlyRates(year: 3, shiftWorkerRate: 12, managerRate: 22),
HourlyRates(year: 4, shiftWorkerRate: 13, managerRate: 23),
HourlyRates(year: 5, shiftWorkerRate: 14, managerRate: 24),
HourlyRates(year: 6, shiftWorkerRate: 15, managerRate: 25),
HourlyRates(year: 7, shiftWorkerRate: 16, managerRate: 26)]),
Dept(deptName: "Training", rates: [
HourlyRates(year: 1, shiftWorkerRate: 12, managerRate: 22),
HourlyRates(year: 2, shiftWorkerRate: 13, managerRate: 23),
HourlyRates(year: 3, shiftWorkerRate: 14, managerRate: 24),
HourlyRates(year: 4, shiftWorkerRate: 15, managerRate: 25),
HourlyRates(year: 5, shiftWorkerRate: 16, managerRate: 26),
HourlyRates(year: 6, shiftWorkerRate: 17, managerRate: 27),
HourlyRates(year: 7, shiftWorkerRate: 18, managerRate: 28)]),
Dept(deptName: "Marketing", rates: [
HourlyRates(year: 1, shiftWorkerRate: 12, managerRate: 22),
HourlyRates(year: 2, shiftWorkerRate: 13, managerRate: 23),
HourlyRates(year: 3, shiftWorkerRate: 14, managerRate: 24),
HourlyRates(year: 4, shiftWorkerRate: 15, managerRate: 25),
HourlyRates(year: 5, shiftWorkerRate: 16, managerRate: 26),
HourlyRates(year: 6, shiftWorkerRate: 17, managerRate: 27),
HourlyRates(year: 7, shiftWorkerRate: 18, managerRate: 28)])
]
}
struct HourlyRates: Identifiable {
let id: UUID
var year: Int
var shiftWorkerRate: Double
var managerRate: Double
init(id: UUID = UUID(), year: Int, shiftWorkerRate: Double, managerRate: Double) {
self.id = id
self.year = year
self.shiftWorkerRate = shiftWorkerRate
self.managerRate = managerRate
}
}
uj5u.com熱心網友回復:
一切對我來說都很好,沒有使用RateDetailView你呼叫的PayRateDetailView,以及PayRateView.
這是我的測驗代碼,顯示“開發”、“培訓”和“營銷”的工資率按預期顯示。
struct ContentView: View {
var body: some View {
NavigationStack { // <-- here
PayRateView()
}
}
}
struct RateCardView: View {
var dept: Dept
var body: some View {
ForEach(dept.rates) { rate in
HStack {
Text("Year \(rate.year)")
Spacer()
Text("$ \(rate.shiftWorkerRate, specifier: "%.2f")")
Spacer()
Text("$ \(rate.managerRate, specifier: "%.2f")")
}
}
}
}
struct PayRateView: View {
var depts: [Dept] = Dept.deptList
var dept: Dept = Dept(deptName: "", rates: [])
var body: some View {
List {
ForEach(depts, id: \.deptName) { dept in // <-- here
NavigationLink(destination: RateCardView(dept: dept)) {
Label(dept.deptName, systemImage: "person") // <-- here
}
}
}
}
}
struct Dept: Identifiable {
let id: UUID
var deptName: String
var rates: [HourlyRates]
init(id: UUID = UUID(), deptName: String, rates: [HourlyRates]) {
self.id = id
self.deptName = deptName
self.rates = rates
}
}
extension Dept {
// here for testing
static let deptList: [Dept] = [
Dept(deptName: "Development", rates: [
HourlyRates(year: 1, shiftWorkerRate: 0, managerRate: 20),
HourlyRates(year: 2, shiftWorkerRate: 0, managerRate: 21),
HourlyRates(year: 3, shiftWorkerRate: 0, managerRate: 22),
HourlyRates(year: 4, shiftWorkerRate: 0, managerRate: 23),
HourlyRates(year: 5, shiftWorkerRate: 0, managerRate: 24),
HourlyRates(year: 6, shiftWorkerRate: 0, managerRate: 25),
HourlyRates(year: 7, shiftWorkerRate: 0, managerRate: 26)]),
Dept(deptName: "Training", rates: [
HourlyRates(year: 1, shiftWorkerRate: 1, managerRate: 22),
HourlyRates(year: 2, shiftWorkerRate: 1, managerRate: 23),
HourlyRates(year: 3, shiftWorkerRate: 1, managerRate: 24),
HourlyRates(year: 4, shiftWorkerRate: 1, managerRate: 25),
HourlyRates(year: 5, shiftWorkerRate: 1, managerRate: 26),
HourlyRates(year: 6, shiftWorkerRate: 1, managerRate: 27),
HourlyRates(year: 7, shiftWorkerRate: 1, managerRate: 28)]),
Dept(deptName: "Marketing", rates: [
HourlyRates(year: 1, shiftWorkerRate: 2, managerRate: 22),
HourlyRates(year: 2, shiftWorkerRate: 2, managerRate: 23),
HourlyRates(year: 3, shiftWorkerRate: 2, managerRate: 24),
HourlyRates(year: 4, shiftWorkerRate: 2, managerRate: 25),
HourlyRates(year: 5, shiftWorkerRate: 2, managerRate: 26),
HourlyRates(year: 6, shiftWorkerRate: 2, managerRate: 27),
HourlyRates(year: 7, shiftWorkerRate: 2, managerRate: 28)])
]
}
struct HourlyRates: Identifiable {
let id: UUID
var year: Int
var shiftWorkerRate: Double
var managerRate: Double
init(id: UUID = UUID(), year: Int, shiftWorkerRate: Double, managerRate: Double) {
self.id = id
self.year = year
self.shiftWorkerRate = shiftWorkerRate
self.managerRate = managerRate
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/532424.html
標籤:数组循环迅捷前锋
上一篇:Python中的串列和回圈
下一篇:迭代時的Python嵌套字典問題
