Saya membangun aplikasi menggunakan SwiftUI dan ingin cara untuk mengonversi Binding<Value?>
menjadi Binding<Value
>.
Di aplikasi saya, saya punya AvatarView
yang tahu cara membuat gambar untuk pengguna tertentu.
struct AvatarView: View {
@Binding var userData: UserData
...
}
Aplikasi saya memiliki ContentView
yang memiliki dua binding: kamus pengguna berdasarkan id, dan id pengguna yang avatarnya harus kita tunjukkan.
struct ContentView: View {
@State var userById: Dictionary<Int, UserData>
@State var activeUserId: Int
var body: some View {
AvatarView(userData: $userById[activeUserId])
}
}
Masalah: kode di atas tidak bergabung karena $userById[activeUserId]
bertipe Binding<UserData?>
dan AvatarView
mengambil a Binding<UserData>
.
Hal yang saya coba ...
$userById[activeUserId]!
tidak berfungsi karena sedang mencoba membukaBinding<UserData?>
. Anda hanya dapat membukaOptional
, bukanBinding<Optional>
.$(userById[activeUserId]!)
tidak berfungsi karena alasan yang belum saya pahami, tetapi saya pikir sesuatu tentang$
diselesaikan pada waktu kompilasi sehingga Anda sepertinya tidak bisa mengawali ekspresi sewenang-wenang dengannya$
.
$userById[activeUserId] as! Binding<UserData>
?