SwiftUI kullanarak bir uygulama geliştiriyorum ve Binding<Value?>
a Binding<Value
> ' ya dönüştürmenin bir yolunu istiyorum .
Benim app AvatarView
belirli 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 ContentView
iki 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 AvatarView
a 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