如何有条件地格式化 SwiftUI 代码

How do I conditionally format SwiftUI code

if(user.reserved == "yes") {
        HStack {
            Image(systemName: "person.crop.circle.badge.checkmark").foregroundColor(.green)
            
            Text("\(user.name)").foregroundColor(.green)
        }
    } else if (user.reserved == "no"){
        HStack {
            Image(systemName: "person.crop.circle.badge.checkmark").foregroundColor(.red)
            
            Text("\(user.name)").foregroundColor(.red)
        }
    } else if (user.reserved == "waiting") {
        HStack {
            Image(systemName: "person.crop.circle.badge.checkmark").foregroundColor(.orange)
            
            Text("\(user.name)").foregroundColor(.orange)
        }
    }

'''

我有这段代码,我想根据用户说“是”或“否”来更改文本颜色的外观。我尝试在 if 语句中创建一个类似“var color: Color”的 var,但是它一直说它不符合视图。我怎样才能有效地制作条件代码,而不是一次又一次地复制过去的每一件事?

您可以根据用户的 reserved 属性:

使用计算出的 属性 returns Color
struct User {
    var reserved : String
    var name : String
}

struct ContentView: View {
    @State private var user = User(reserved: "waiting", name: "Bob")
    
    var colorForReserved : Color {
        switch user.reserved {
        case "yes":
            return .green
        case "no":
            return .red
        case "waiting":
            return .orange
        default:
            return .black
        }
    }
    
    var body: some View {
        HStack {
            Image(systemName: "person.crop.circle.badge.checkmark")
            Text(user.name)
        }
        .foregroundColor(colorForReserved)
    }
}

请注意,如果将 reserved 更改为 enum 而不是 String[,则可以避免 default =17=]