Sto creando un'app utilizzando SwiftUI e vorrei un modo per convertire un Binding<Value?>in Binding<Value>.
Nella mia app ne ho uno AvatarViewche sa come rendere un'immagine per un particolare utente.
struct AvatarView: View {
@Binding var userData: UserData
...
}
La mia app contiene un ContentViewche 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 AvatarViewa 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>?