अगर मैं कोई init
साथ एक तेज struct बनाने के लिए, तो मैं संकलक उत्पन्न डिफ़ॉल्ट सदस्य वार initialiser, इसलिए की तरह कॉल कर सकते हैं:स्विफ्ट - मैं अपने कस्टम init विधि से एक struct डिफ़ॉल्ट सदस्य वार init कॉल कर सकते हैं?
struct OrderFill {
let price:Int
let qty: Int
let timeStamp: NSDate
}
let o = OrderFill(price: 2, qty: 1, timeStamp: someDate)
मुझे क्या करना चाहते हैं से deserialise करने के लिए एक सुविधा init विधि बनाने है एक शब्दकोश, जो तब डिफ़ॉल्ट सदस्यवृत्ति init को चेन करता है।
struct OrderFill {
let price:Int
let qty: Int
let timeStamp: NSDate
init(dict:[String:AnyObject]) throws {
self.init(
price: dict["price"] as! Int
qty: dict["qty"] as! Int
timeStamp: try parseDate(dict["ts"] as! String)
}
}
let o = OrderFill(someDict)
मुझे इस कोड हालांकि संकलक (Xcode 7.2) लिखते हैं, की कोशिश की तरह मुझे कुछ "कॉल में अतिरिक्त तर्क 'मात्रा' 'के रूप में हालांकि यह डिफ़ॉल्ट सदस्य वार नहीं देखता त्रुटि देता है और करने के लिए कोशिश कर रहा है रिकर्सिव कॉल init(dictionary)
मैं अपना स्वयं का सदस्यवाही init लिख सकता हूं, या मैं सीधे अपने init(dictionary)
से गुणों को असाइन कर सकता हूं, लेकिन अगर मैं कॉल कर सकता तो यह अच्छा होगा। क्या यह तेजी से करने का कोई तरीका है?
इस तरह की hacky है, लेकिन वास्तव में काम करता है ...: हे – luk2302
hacky लग सकता है, लेकिन यह किताब में भी है ... '' 'नोट आप अपने कस्टम मान प्रकार के साथ initializable होना चाहते हैं डिफ़ॉल्ट प्रारंभकर्ता और सदस्यवा प्रारंभिक, और अपने स्वयं के कस्टम प्रारंभकर्ताओं के साथ, मूल्य प्रकार के मूल कार्यान्वयन के हिस्से के बजाय अपने कस्टम प्रारंभकर्ताओं को एक्सटेंशन में लिखें। अधिक जानकारी के लिए, एक्सटेंशन देखें।''' – rob5408