Estou criando um aplicativo usando o SwiftUI e gostaria de converter um Binding<Value?>para um Binding<Value>.
No meu aplicativo, eu tenho um AvatarViewque sabe como renderizar uma imagem para um usuário específico.
struct AvatarView: View {
@Binding var userData: UserData
...
}
Meu aplicativo possui um ContentViewque possui duas ligações: um dicionário de usuários por ID e o ID do usuário cujo avatar devemos mostrar.
struct ContentView: View {
@State var userById: Dictionary<Int, UserData>
@State var activeUserId: Int
var body: some View {
AvatarView(userData: $userById[activeUserId])
}
}
Problema: o código acima não combina porque $userById[activeUserId]é do tipo Binding<UserData?>e AvatarViewleva a Binding<UserData>.
Coisas que eu tentei ...
$userById[activeUserId]!não funciona porque está tentando desembrulhar aBinding<UserData?>. Você só pode desembrulhar umOptional, não umBinding<Optional>.$(userById[activeUserId]!)não funciona por razões que ainda não entendi, mas acho que algo$foi resolvido no momento da compilação, para que você não consiga prefixar expressões arbitrárias com$.
$userById[activeUserId] as! Binding<UserData>?