我正在使用SwiftUI构建应用,并希望将a转换Binding<Value?>
为Binding<Value
>。
在我的应用程序中,我有一个AvatarView
,它知道如何为特定用户渲染图像。
struct AvatarView: View {
@Binding var userData: UserData
...
}
我的应用程序拥有一个ContentView
拥有两个绑定的:一个ID用户字典,以及我们应显示其头像的用户ID。
struct ContentView: View {
@State var userById: Dictionary<Int, UserData>
@State var activeUserId: Int
var body: some View {
AvatarView(userData: $userById[activeUserId])
}
}
问题:上面的代码没有合并,因为$userById[activeUserId]
它是类型的,Binding<UserData?>
并且AvatarView
包含一个Binding<UserData>
。
我尝试过的事情
$userById[activeUserId]!
不起作用,因为它正在尝试打开Binding<UserData?>
。您只能解开一个Optional
,而不能解开一个Binding<Optional>
。$(userById[activeUserId]!)
由于我尚不了解的原因而无法正常工作,但是我认为有关$
问题在编译时已解决,因此您似乎无法在任意表达式前添加前缀$
。
谢谢你的建议!我认为这可能会很好,但我宁愿不要进行不安全的转换。当我尝试它时,我得到一个生成警告,提示“从Binding <UserData?>转换为无关类型的Binding <UserData>”
—
rjkaplan
$userById[activeUserId] as! Binding<UserData>
吗?