Ios 如何在Swift中打开绑定内的可选值?
我正在使用SwiftUI构建一个应用程序,希望找到一种将Ios 如何在Swift中打开绑定内的可选值?,ios,swift,swiftui,combine,Ios,Swift,Swiftui,Combine,我正在使用SwiftUI构建一个应用程序,希望找到一种将绑定转换为绑定的方法 在我的应用程序中,我有一个AvatarView,它知道如何为特定用户渲染图像 struct AvatarView:View{ @绑定var userData:userData ... } 我的应用程序拥有一个ContentView,它拥有两个绑定:一个按id划分的用户字典,以及我们应该显示其化身的用户id struct ContentView:View{ @状态变量userById:字典 @状态变量activeUse
绑定
转换为绑定的方法
在我的应用程序中,我有一个AvatarView
,它知道如何为特定用户渲染图像
struct AvatarView:View{
@绑定var userData:userData
...
}
我的应用程序拥有一个ContentView
,它拥有两个绑定:一个按id划分的用户字典,以及我们应该显示其化身的用户id
struct ContentView:View{
@状态变量userById:字典
@状态变量activeUserId:Int
var body:一些观点{
AvatarView(用户数据:$userById[activeUserId])
}
}
问题:上述代码无法组合,因为$userById[activeUserId]
属于Binding
类型,AvatarView
接受绑定
我试过的东西
$userById[activeUserId]代码>无法工作,因为它正在尝试打开绑定
。只能展开可选
,不能展开绑定
$(userById[activeUserId]!)
不起作用的原因我还不明白,但我认为关于$
的某些问题在编译时得到了解决,所以您似乎不能在任意表达式前面加上$
您可以使用,它似乎可以处理这个确切的情况-将绑定
转换为绑定?
:
我用了
强制展开,就像在尝试中一样,但可以根据需要展开nil
。表达式绑定($userById[activeUserId])
属于绑定类型?
您是否尝试将$userById[activeUserId]作为!绑定
?感谢您的建议!我认为这可能会很好,但我宁愿不做不安全的演员。当我尝试它时,我得到一个构建警告,说“从绑定转换为不相关的类型绑定”
var body: some View {
AvatarView(userData: Binding($userById[activeUserId])!)
}