Swift switch 语句未涵盖所有情况

Swift switch statement not covering all cases

我想要的结果是涵盖 0% 到 100% 之间的值和范围,但我的进度视图适用于 0.0 到 1.0 的值,其中 1.0 等于 100%

有人能给我指出正确的方向吗?

import SwiftUI

struct ProgressBar: View {
    @Binding var progress: Double
    var color: Color
    
    init(progress: Binding<Double>) {
        _progress = progress
        switch progress.wrappedValue {
        case 0.0...0.20: // Fix: on 0.206 I get black color value
            color = .green
            
        case 0.21...0.40:
            color = .green
            
        case 0.41...0.60:
            color = .yellow
            
        case 0.61...1.0:
            color = .red
            
        default:
            color = .black
        }
    }

正如您所发现的,您的案例并未涵盖所有数值可能性。此外,您的 color 应该是根据 Binding 的当前状态计算得出的 属性,而不是您在 init:

中设置的内容
struct ProgressBar: View {
    @Binding var progress: Double
    var color: Color {
        switch progress {
        case 0.0..<0.20:
            return .blue
        case 0.20..<0.40:
            return .green
        case 0.40..<0.60:
            return .yellow
        case 0.60...1.0:
            return .red
        default:
            return .black
        }
    }
    
    var body: some View {
        color
    }
}