Sto creando un'app utilizzando SwiftUI e vorrei un modo per convertire un Binding<Value?>
in Binding<Value
>.
Nella mia app ne ho uno AvatarView
che sa come rendere un'immagine per un particolare utente.
struct AvatarView: View {
@Binding var userData: UserData
...
}
La mia app contiene un ContentView
che possiede due associazioni: un dizionario di utenti per ID e l'id dell'utente di cui dovremmo mostrare l'avatar.
struct ContentView: View {
@State var userById: Dictionary<Int, UserData>
@State var activeUserId: Int
var body: some View {
AvatarView(userData: $userById[activeUserId])
}
}
Problema: il codice sopra riportato non si combina perché $userById[activeUserId]
è di tipo Binding<UserData?>
e contiene AvatarView
a Binding<UserData>
.
Cose che ho provato ...
$userById[activeUserId]!
non funziona perché sta cercando di scartare unBinding<UserData?>
. Puoi solo scartare unOptional
, non unBinding<Optional>
.$(userById[activeUserId]!)
non funziona per motivi che non ho ancora capito, ma penso che qualcosa al momento$
sia stato risolto in modo da non poter prefiggere espressioni arbitrarie$
.
$userById[activeUserId] as! Binding<UserData>
?