मुझे यकीन नहीं है कि अगर हम इस बहादुर नई स्विफ्टयूई दुनिया में रहते हैं, तो यह एक एंटीपैटर्न है, लेकिन अनिवार्य रूप से मेरे पास इसमें कुछ मूल उपयोगकर्ता जानकारी के साथ एक @EnvironmentObject है जो मेरे विचारों को कॉल कर सकता है।
मेरे पास एक @ObservedObject भी है जो इस दृश्य के लिए आवश्यक कुछ डेटा का मालिक है।
जब दृश्य दिखाई देता है, तो मैं @ObservedObject को आरंभ करने के लिए उस @EnvironmentObject का उपयोग करना चाहता हूं:
struct MyCoolView: View {
@EnvironmentObject userData: UserData
@ObservedObject var viewObject: ViewObject = ViewObject(id: self.userData.UID)
var body: some View {
Text("\(self.viewObject.myCoolProperty)")
}
}
दुर्भाग्य से मैं आरंभीकरण के बाद तक पर्यावरण चर पर स्वयं को कॉल नहीं कर सकता:
"संपत्ति इनिशियलाइज़र के भीतर उदाहरण सदस्य 'userData' का उपयोग नहीं किया जा सकता है;
मैं कुछ संभावित मार्गों को आगे देख सकता हूं, लेकिन वे सभी हैक की तरह महसूस करते हैं। मुझे इससे कैसे संपर्क करना चाहिए?
Property wrappers are not yet supported on local properties
मूल रूप से यह कहते हुए कि मैं एक init विधि में एक @ObservedObject नहीं बना सकता।
init
संरचना में एक कस्टम जोड़ने की कोशिश कर सकते हैं ।