【发布时间】:2021-09-26 05:17:03
【问题描述】:
如何使用所需的包装值手动初始化 Swift 绑定?
使用 Bool 作为类型,这是最基本的所需 init
let b: Binding<Bool> = Binding.init(true) //错误信息:
Cannot convert value of type 'Bool' to expected argument type 'Binding<Bool?>
Value of optional type 'Binding<Bool>?' must be unwrapped to a value of type 'Binding<Bool>'
我的问题
- 为什么会出现上述错误?
- 初始化简单 Bool 绑定的正确语法是什么
- 为什么必须在类型签名中包含可选参数 ()
【问题讨论】:
-
你的意思是
Binding<Bool>.constant(true)? -
Binding.init(Boolean)不是Binding的值初始化器。您能详细说明您要完成的工作吗?绑定通常用于 SwiftUI 或(可能)Combine 中的双向通信。初始化绑定后没有@State或@Published属性(或在自定义绑定中写入的其他内容)是可疑的。也许如果您描述了您要完成的工作,有人可以帮助您找到解决方案。 -
@jnpdx,谢谢,
@State var bool: Bool = true似乎在出售Binding<Bool>。我试图用一个 WrappedValue 手动初始化一个 Binding,看看我是否理解它们是如何创建的。 -
也许这对你有帮助。 stackoverflow.com/questions/56973959/…
-
绑定是一种双向连接,它不意味着在没有事实来源的情况下进行初始化。它有 .constant 为预览做一个死胡同它只是一个死胡同作为真相的来源