2016-06-20 8 views
9

मैंने अपने जैसे कई प्रश्न देखे हैं; हालांकि, वे तेजी से 2/1 से संबंधित हैं और मैं वर्तमान में स्विफ्ट 3 का उपयोग कर रहा हूं। मेरा मानना ​​है कि ऐप्पल ने इसे थोड़ा बदल दिया है।प्रोटोकॉल 'एनएससीओडी' के अनुरूप नहीं है - स्विफ्ट 3

class Person: NSObject, NSCoding { 

    var signature: UIImage 

    init(signature: UIImage) { 
     self.signature = signature 
    } 

    required convenience init(coder aDecoder: NSCoder) { 
     let signature = aDecoder.decodeObject(forKey: "signature") as! UIImage 
     self.init(signature: signature) 
    } 

    func encodeWithCoder(aCoder: NSCoder) { 
     aCoder.encode(signature, forKey: "signature") 
    } 

} 

आप कैसे स्विफ्ट 3 अब मुझे मजबूर करता required init( के बजाय required convenience init( उपयोग करने के लिए देखेंगे। शायद इसके साथ कुछ करने के लिए है।

मैं इस समस्या को कैसे हल कर सकता हूं? धन्यवाद!

+0

क्या आपने एक्सकोड में "संपादित करें -> कनवर्ट करें -> वर्तमान स्विफ्ट सिंटेक्स" का प्रयास किया था? यह समस्या को स्वचालित रूप से ठीक करना चाहिए। –

उत्तर

33

स्विफ्ट 3 में encode विधि

func encode(with aCoder: NSCoder) 

को नाम दिया गया है जब आप मिल त्रुटि आप आसानी से पता कर सकते हैं जो आवश्यक तरीकों

  • प्रेस ⌘ याद कर रहे हैं अनुरूप नहीं है कोड बनाने के लिए बी
  • समस्या नेविगेटर दिखाने के लिए ⌘4 दबाएं।
  • समस्या रेखा के सामने प्रकटीकरण त्रिकोण पर क्लिक करें।
+0

पूरी तरह से काम करता है। मैं 6 मिनट में स्वीकार करूंगा तो एसओ चलिए मुझे ऐसा करते हैं :) – penatheboss

+0

मुझे विश्वास है कि मैंने इसके लिए अपने 2 कीमती दिन बर्बाद कर दिए हैं .. इस तरह के बदलाव के लिए आप घूमते हैं .. और मुझे अपने गधे को बचाने के लिए प्यार है। :) धन्यवाद एक लॉट –

संबंधित मुद्दे