在 SwiftUI 中使用字符串而不是枚举值可能吗?

问题描述 投票:0回答:0

我尽量避免使用

ZStack
重复
ForEach
7 次,一切正常。但我不能用
dates.contains(.Monday)
代替
dates.contains(bubble.word)

我也收到一个错误:实例方法“包含”需要类型“Week”和“String.Element”(又名“Character”)是等效的。

我也试过

dates.contains(.\(bubble.word))
.

我正在尝试做的事情是可能的还是根本不可能?谢谢!

import Foundation
import SwiftUI

enum Week {
    case Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
}

struct Car: Identifiable {
    let id = UUID()
    let name: String
    let days: [Week]
}

let cars = [
    Car(name: "Peugeot 307", days: [.Monday, .Sunday]),
    Car(name: "Dacia Duster", days: [.Monday, .Sunday])
]

struct ParentView: View {
    let car: Car
    var body: some View {
        ChildView(dates: car.days)
    }
}

struct Bubble: Identifiable {
    let id = UUID()
    let letter: String
    let word: String
}

let bubbles = [
    Bubble(letter: "M", word: "Monday"),
    Bubble(letter: "T", word: "Tuesday"),
    // To Sunday
]

struct ChildView: View {
    let dates: [Week]
    var body: some View {
        ForEach(bubbles) { bubble in
            ZStack {
                Circle()
                    .foregroundColor(dates.contains(.Monday) ? .black : nil)
                    .frame(width: 22, height: 22)
                Text(bubble.letter)
                    .foregroundColor(dates.contains(.Monday) ? .white : .grey))
            }
        }
    }
}
arrays swift swiftui enums contains
© www.soinside.com 2019 - 2024. All rights reserved.