gpt4 book ai didi

SwiftUI 可选文本字段

转载 作者:行者123 更新时间:2023-12-04 01:06:45 25 4
gpt4 key购买 nike

SwiftUI 文本字段可以与可选绑定(bind)一起使用吗?目前这段代码:

struct SOTestView : View {
@State var test: String? = "Test"

var body: some View {
TextField($test)
}
}

产生以下错误:

Cannot convert value of type 'Binding< String?>' to expected argument type 'Binding< String>'



有没有办法解决?在数据模型中使用 Optionals 是一种非常常见的模式——事实上它是 Core Data 中的默认设置,所以 SwiftUI 不支持它们似乎很奇怪

最佳答案

您可以添加此运算符重载,然后它就像不是绑定(bind)一样自然地工作。

func ??<T>(lhs: Binding<Optional<T>>, rhs: T) -> Binding<T> {
Binding(
get: { lhs.wrappedValue ?? rhs },
set: { lhs.wrappedValue = $0 }
)
}

这将创建一个 Binding,如果它不是 nil,则返回运算符值的左侧,否则从右侧返回默认值。

设置时只设置 lhs 值,而忽略与右侧有关的任何内容。

它可以这样使用:
TextField("", text: $test ?? "default value")

关于SwiftUI 可选文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57021722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com