swift - 无法将“浮点”类型的值转换为预期的参数类型“绑定”' 错误 Swift 5.2
问题描述
我正在尝试使用 MVVM 模式设计重构我的代码,一切都很好,直到我到达我的项目属性之一,该属性是从 viewModel 文件发布并在 ContentView 文件中观察到的浮点数,以显示进度条的百分比。我对这个主题的理解非常原始,所以我需要认真的帮助。以下是我的项目的 view 和 viewModel 文件中与我得到的错误相关的代码部分:
//-----------------------ContentView File
import SwiftUI
struct ContentView: View {
@ObservedObject var quizBrain = QuizBrain()
var body: some View {
VStack {
ProgressBar(barValue: quizBrain.progBarPercentage).frame(height: 35) }
// Here I get this error: Cannot convert value of type 'Float' to expected argument type 'Binding<Float>'
struct ProgressBar: View {
@Binding var barValue: Float
var body: some View {
GeometryReader { geometry in
ZStack(alignment: .leading) {
Rectangle().frame(width: geometry.size.width , height: geometry.size.height)
.opacity(0.3)
.foregroundColor(Color(UIColor.systemTeal))
Rectangle().frame(width: min(CGFloat(self.barValue)*geometry.size.width, geometry.size.width), height: geometry.size.height)
.foregroundColor(Color(UIColor.systemBlue))
.animation(.linear)
}.cornerRadius(45.0)
}
}
}
//--------------------ViewModel File
import Foundation
class QuizBrain: ObservableObject {
@Published var x = 10 //a method generate this Int
@Published var y = 8 //a method generate this Int
@Published var progBarPercentage : Float = 0.0
func progressBarFunc() {
progBarPercentage = Float(y)/Float(x)
}
}
解决方案
您必须使用quizBrain
对象的绑定而不是 progBarPercentage 的Float
值。
struct ContentView: View {
@ObservedObject var quizBrain = QuizBrain()
var body: some View {
VStack {
ProgressBar(barValue: $quizBrain.progBarPercentage).frame(height: 35)
// Add $ to create a two way binding
}
}
}
推荐阅读
- javascript - 如何检查真实值但不跳过 0?
- scala - pureconfig 可以使用驼峰式配置吗
- powershell - TFS 2017 构建执行 powershell 由于第 1 行上的术语无法识别错误而失败
- java - 当我们可以强制转换为 Object 类时,为什么需要泛型?
- javascript - 是否可以从 JS 显式调用导出的 Go WebAssembly 函数?
- java - 及时为大量db请求配置Spring JPA with PostgreSQL
- django - Django 查询多对多字段中的记录总数
- kotlin - 根据 Kotlin 中的属性整理列表
- php - 使用PHP显示服务器的本地IP地址
- node.js - 温斯顿和节点版本兼容性