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
}
}
我想要的结果是涵盖 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
}
}