Xcode报错:ObservedObject.Wrapper’ to expected argument type ‘Bindi
Xcode报错:ObservedObject.Wrapper’ to expected argument type ‘Bindi

Xcode报错:ObservedObject.Wrapper’ to expected argument type ‘Bindi

下面为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 中的变化,确保更新后的数据被正确显示。

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开放者。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注