मैं SwiftUI का उपयोग करके एक ऐप बना रहा हूं और इसे a Binding<Value?>
से a में कन्वर्ट करने का तरीका चाहूंगा Binding<Value
।
मेरे ऐप में मेरे पास एक ऐसा है AvatarView
जो किसी विशेष उपयोगकर्ता के लिए एक छवि प्रदान करना जानता है।
struct AvatarView: View {
@Binding var userData: UserData
...
}
मेरा ऐप एक ContentView
ऐसा खाता है जो दो बाइंडिंग का मालिक है: आईडी द्वारा उपयोगकर्ताओं का एक शब्दकोश, और उपयोगकर्ता का आईडी जिसका अवतार हम दिखा रहे हैं।
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>
?