我如何在 Swift 中投射 @Binding

Ada*_*hus 6 binding casting slider swift swiftui

很快我就可以用 Int(doubleVariable) 将 Int 转换为 Double 。

但是如何将 Binding <Double> 转换为 Binding<Int> 呢?

然后我可以将 @Binding var intVar: Int 传递给需要 Double 绑定的函数。

(这个上下文是我有一个 Int,我想将其传递给 SwiftUI 中的 Slider。)

sas*_*sas 9

我不认为\xe2\x80\x99t 存在\xe2\x80\x99s 一种投射方式,但您可以基于第一个绑定创建另一个绑定:

\n\n
import SwiftUI\nvar d = 1.0\n// Create a Binding<Double> (for lack of another source)\nvar bd = Binding<Double>(get: { d }, set: { d = $0 })\n// "Convert" to Binding<Int> by recreating another Binding\nlet bi = Binding<Int>(get: { Int(bd.wrappedValue) },\n                      set: { bd.wrappedValue = Double($0) })\n
Run Code Online (Sandbox Code Playgroud)\n

  • 您将从其他来源获得“Binding&lt;Double&gt;”,“bd”只是为了提供完整的工作示例而创建的。问题是如何构造“bi”。无论“Binding&lt;Double&gt;”的来源是什么,请将其替换为“bd”。 (2认同)