Je crée une application à l'aide de SwiftUI et je voudrais un moyen de convertir un Binding<Value?>enBinding<Value >.
Dans mon application, j'ai un AvatarViewqui sait rendre une image pour un utilisateur particulier.
struct AvatarView: View {
@Binding var userData: UserData
...
}
Mon application contient un ContentViewqui possède deux liaisons: un dictionnaire d'utilisateurs par identifiant et l'identifiant de l'utilisateur dont nous devrions montrer l'avatar.
struct ContentView: View {
@State var userById: Dictionary<Int, UserData>
@State var activeUserId: Int
var body: some View {
AvatarView(userData: $userById[activeUserId])
}
}
Problème: le code ci-dessus ne se combine pas car il $userById[activeUserId]est de type Binding<UserData?>et AvatarViewprend en a Binding<UserData>.
Ce que j'ai essayé ...
$userById[activeUserId]!ne fonctionne pas car il essaie de déballer un fichierBinding<UserData?>. Vous pouvez uniquement déballer unOptional, pas unBinding<Optional>.$(userById[activeUserId]!)ne fonctionne pas pour des raisons que je ne comprends pas encore, mais je pense que quelque chose$est résolu au moment de la compilation, vous ne pouvez donc pas sembler préfixer des expressions arbitraires avec$.
$userById[activeUserId] as! Binding<UserData>?