xcode - Failable och non-failable initializers prevents me to extend NSView and implement NSCoding -
मुझे उपवर्ग को NSView
को लागू करने में समस्या आ रही है जो कि लागू करता है NSCoding
init (सांकेतिक शब्दों में बदलनेवाला: NSCoder) की घोषणाओं की तरह लगता है।
में परस्पर विरोधी हैं NSView
और NSCoding
। NSView
आजकल कहता है कि यह फ़्यूज़ेबल है, लेकिन NSCoding
अभी भी कहता है कि यह गैर-फ़्यूज़ल है
जब मैं init (सांकेतिक शब्दों में बदलनेवाला: NSCoder) ओवरराइड करने के लिए कोशिश
और अपने कस्टम initialisation करते हैं, Xcode 6.1 मुझे एक त्रुटि संदेश देता है:
गैर-फ़्लेम्याबल इनिशियलाइज़र फंलाइंटर आरिलाइज़र 'इनिट (कॉडर)' के साथ लिखे गए 'इनट?' के लिए चेन नहीं कर सकता है
मुझे मेरे क्लास के कस्टम इनटैट को कैसे करना चाहिए?
यहाँ एक मूर्खतापूर्ण उदाहरण है जहां मैं एक दृश्य विस्तारित करता हूं और मैं अपने दृश्य के लिए एक अतिरिक्त क्लिक काउंटर जारी रखना चाहता हूं।
आयात कोको आयात फाउंडेशन वर्ग MyView: NSView, NSCoding {var clickCounter: इंट = 0 आवश्यक init (सांकेतिक शब्दों में बदलनेवाला: NSCoder) {super.init (सांकेतिक शब्दों में बदलनेवाला: सांकेतिक शब्दों में बदलनेवाला) coder.encodeObject (self.clickCounter , forKey: "clickCounter")} ओवरराइड समारोह encodeWithCoder (सांकेतिक शब्दों में बदलनेवाला: NSCoder) {super.encodeWithCoder (सांकेतिक शब्दों में बदलनेवाला) coder.encodeObject (self.clickCounter, forKey: "clickCounter")} mousedown (theEvent समारोह ओवरराइड: NSEvent) {clickCounter ++}}
आप स्पष्ट रूप से NSCoding
के अनुरूप नहीं है, क्योंकि NSResponder
(के सुपर क्लास NSView
) पहले से ही यह के अनुरूप है
आवश्यक init (सांकेतिक शब्दों में बदलनेवाला:।? NSCoder) {super.init (सांकेतिक शब्दों में बदलनेवाला: सांकेतिक शब्दों में बदलनेवाला) self.clickCounter = coder.decodeObjectForKey ( " ClickCounter ") के रूप में Int} < / कोड>
Comments
Post a Comment