SwiftUI 中的可选绑定
Posted
技术标签:
【中文标题】SwiftUI 中的可选绑定【英文标题】:Optional Binding in SwiftUI 【发布时间】:2020-05-31 00:02:48 【问题描述】:我正在尝试在 Binding 上创建一个扩展,以便我可以打开并绑定到可选的 Binding。
我有以下从 *** 获得的代码。
extension Binding
static func ??<T>(lhs: Binding<Optional<T>>, rhs: T) -> Binding<T>
return Binding(
get: lhs.wrappedValue ?? rhs ,
set: lhs.wrappedValue = $0
)
但我收到以下错误:
【问题讨论】:
【参考方案1】:当你使用Binding(...)
的初始化器时,它会推断出它的类型参数是Value
(记住,Binding
本身是一个泛型,Value
是它的类型参数),所以实际上它是这样做的:
Binding<Value>(...)
但期望返回为Binding<T>
。
所以,你既可以显式使用Binding<T>(...)
,也可以让编译器根据函数的返回值来推断:
static func ??<T>(lhs: Binding<Optional<T>>, rhs: T) -> Binding<T>
.init(get lhs.wrappedValue ?? rhs ,
set lhs.wrappedValue = $0 )
或者,只需使用Value
而不是T
:
static func ??(lhs: Binding<Optional<Value>>, rhs: Value) -> Binding<Value>
Binding(get lhs.wrappedValue ?? rhs ,
set lhs.wrappedValue = $0 )
【讨论】:
以上是关于SwiftUI 中的可选绑定的主要内容,如果未能解决你的问题,请参考以下文章