下面为Xcode报错代码:
HomeView(updateER: $updateER)
在Xcode中尝试给视图传参时,提示报错:
提示:Cannot convert value of type 'ObservedObject<UpdateER>.Wrapper' to expected argument type 'Binding<UpdateER>'
报错原因为:HomeView所接受的参数类型为Binding<UpdateER>,给HomeView传递参数的ContentView视图的参数为@StateObject类型。
struct ContentView: View {
@StateObject private var updateER = UpdateER()
...
}
因此导致该报错。
解决方案为将接受参数的视图改为@ObservedObject类型。
struct HomeView: View {
@ObservedObject var updateER: UpdateER // 改为 @ObservedObject
var body: some View {
// 使用 updateER 访问数据
Text("汇率信息: \(updateER.updateERInfo?.data.lastDate ?? "无")")
}
}
将HomeView的updateER参数改为@ObservedObject,可以直接传递UpdateER对象,而不需要Binding。
HomeView(updateER: updateER) // 直接传递 @StateObject
使用 @StateObject 在 ContentView 中管理 UpdateER 的生命周期,并直接传递到子视图中。这样,子视图就会自动响应 updateER 中的变化,确保更新后的数据被正确显示。