Saya membangun aplikasi menggunakan SwiftUI dan ingin cara untuk mengonversi Binding<Value?>menjadi Binding<Value>.
Di aplikasi saya, saya punya AvatarViewyang tahu cara membuat gambar untuk pengguna tertentu.
struct AvatarView: View {
@Binding var userData: UserData
...
}
Aplikasi saya memiliki ContentViewyang 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 AvatarViewmengambil 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>?