Ios 如何在Swift中打开绑定内的可选值?

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

我正在使用SwiftUI构建一个应用程序,希望找到一种将
绑定
转换为
绑定的方法

在我的应用程序中,我有一个
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])!)
}