如何修复无法将类型“Binding<Device>”的值转换为预期参数类型“Device”

Mar*_*rdo 4 binding swiftui

我正在编写一个小应用程序,我需要将变量传递给函数。问题是该变量是绑定,但函数必须接受常规变量。

代码:

ForEach($deviceArrays.devices, id: \.id) { deviceArray in
     HStack {
          ForEach(deviceArray.row, id: \.id) { device in
               AnotherView(device: $currentDevice, size: $size)
                   .onAppear {
                        setCurrentDevice(to: device)
                    }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
func setCurrentDevice(to device: Device) {
    currentDevice = device
}

Run Code Online (Sandbox Code Playgroud)

Geo*_*e_E 9

这里的问题是在这一行:

ForEach($deviceArrays.devices, id: \.id) { deviceArray in
Run Code Online (Sandbox Code Playgroud)

您应该使用$deviceArray它,因为您正在将 a 输入BindingForEach. 然后就可以访问deviceArray常规值了。


其他解决方案

使用其wrappedValue属性。

这会将 的类型转换Binding<T>T。在你的情况下,Binding<Device>Device.

ForEach($deviceArrays.devices, id: \.id) { deviceArray in
     HStack {
          ForEach(deviceArray.row, id: \.id) { device in
               AnotherView(device: $currentDevice, size: $size)
                   .onAppear {
                        setCurrentDevice(to: device.wrappedValue)
                    }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)