ฉันกำลังสร้างแอปโดยใช้ SwiftUI และต้องการเปลี่ยนเป็นBinding<Value?>
a Binding<Value
>
ในแอพของฉันมีสิ่งAvatarView
ที่รู้วิธีการแสดงภาพสำหรับผู้ใช้เฉพาะ
struct AvatarView: View {
@Binding var userData: UserData
...
}
แอพของฉันมีContentView
สองสิ่งที่เป็นเจ้าของ: พจนานุกรมของผู้ใช้ตาม ID และรหัสของผู้ใช้ที่เราควรแสดงอวาตาร์
struct ContentView: View {
@State var userById: Dictionary<Int, UserData>
@State var activeUserId: Int
var body: some View {
AvatarView(userData: $userById[activeUserId])
}
}
ปัญหา: รหัสข้างต้นไม่รวมเพราะ$userById[activeUserId]
เป็นประเภทBinding<UserData?>
และจะใช้เวลาในAvatarView
Binding<UserData>
สิ่งที่ฉันพยายาม ...
$userById[activeUserId]!
Binding<UserData?>
ไม่ได้เพราะมันพยายามกับแกะ คุณสามารถแกะไม่Optional
Binding<Optional>
$(userById[activeUserId]!)
ไม่ทำงานสำหรับเหตุผลที่ฉันยังไม่เข้าใจ แต่ผมคิดว่าบางสิ่งบางอย่างเกี่ยวกับการแก้ไขที่รวบรวมเวลาเพื่อให้คุณไม่สามารถดูเหมือนจะคำนำหน้าโดยพลการแสดงออกด้วย$
$
$userById[activeUserId] as! Binding<UserData>
ไหม