ฉันกำลังสร้างแอปโดยใช้ 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?>และจะใช้เวลาในAvatarViewBinding<UserData>
สิ่งที่ฉันพยายาม ...
$userById[activeUserId]!Binding<UserData?>ไม่ได้เพราะมันพยายามกับแกะ คุณสามารถแกะไม่OptionalBinding<Optional>$(userById[activeUserId]!)ไม่ทำงานสำหรับเหตุผลที่ฉันยังไม่เข้าใจ แต่ผมคิดว่าบางสิ่งบางอย่างเกี่ยวกับการแก้ไขที่รวบรวมเวลาเพื่อให้คุณไม่สามารถดูเหมือนจะคำนำหน้าโดยพลการแสดงออกด้วย$$
$userById[activeUserId] as! Binding<UserData>ไหม