SwiftUI kullanarak bir uygulama geliştiriyorum ve Binding<Value?>a Binding<Value> ' ya dönüştürmenin bir yolunu istiyorum .
Benim app AvatarViewbelirli bir kullanıcı için bir görüntü oluşturmak için nasıl bilen bir var.
struct AvatarView: View {
@Binding var userData: UserData
...
}
Uygulamam ContentViewiki bağlamaya sahip bir tutar : kimliğe göre kullanıcıların bir sözlüğü ve avatarını göstermemiz gereken kullanıcının kimliği.
struct ContentView: View {
@State var userById: Dictionary<Int, UserData>
@State var activeUserId: Int
var body: some View {
AvatarView(userData: $userById[activeUserId])
}
}
Sorun: Yukarıdaki kod, $userById[activeUserId]tür olduğundan Binding<UserData?>ve AvatarViewa Binding<UserData>.
Denediğim şeyler ...
$userById[activeUserId]!çalışmıyor çünkü aBinding<UserData?>. Sadece anı açabilirsinOptional, değilBinding<Optional>.$(userById[activeUserId]!)henüz anlamadığım nedenlerle çalışmıyor, ama sanırım hakkında bir şey$derleme zamanında çözüldü, bu yüzden rastgele ifadelerin önekini kullanamazsınız$.
$userById[activeUserId] as! Binding<UserData>mi