2016-09-18 3 views
9

मैं वर्तमान में Xcode 8."OLDVALUE" और "newValue" डिफ़ॉल्ट पैरामीटर willSet/didSet अंदर नाम गैर मान्यता प्राप्त

में लिख रहा हूँ स्विफ्ट 3 कोड willSet और didSet ब्लॉक के अंदर oldValue और newValue डिफ़ॉल्ट मापदंडों का उपयोग कर, मैं हो रही है "unresolved identifier" कंपाइलर त्रुटि।

मैं

var vc:UIViewController? { 
    willSet { 
     print("Old value is \(oldValue)") 
    } 
    didSet(viewController) { 
     print("New value is \(newValue)") 
    } 
} 

स्विफ्ट 3 के लिए Apple Documentation नीचे के रूप में एक बहुत ही बुनियादी कोड है अभी भी इन सुविधा का समर्थन करने लगता है। मुझे आशा है कि मुझे यहां कुछ भी याद नहीं है?

उत्तर

6
var vc:UIViewController? { 
    willSet { 
     print("New value is \(newValue)") 
    } 
    didSet { 
     print("Old value is \(oldValue)") 
    } 
} 
+1

नहीं पूरी तरह से सही , oldValue अभी भी अपरिचित माना जाता है। 'ViewController' पैरामीटर को हटाने से यह काम करता है। – Adithya

+0

हां, क्षमा करें। मैंने आपके चर को नोटिस नहीं किया। –

-2

Dmytro's answer से मैं didSet दिया वहाँ कोई कस्टम पैरामीटर हैं ब्लॉक के लिए willSet और oldValue कार्यों के अंतर्गत निकालना, newValue काम करता है में सक्षम था।

var vc:UIViewController? { 
    willSet { 
     print("New value is \(newValue)") 
    } 
    didSet { 
     print("Old value is \(oldValue)") 
    } 
} 
14

तुम भी उपयोग कर सकते हैं vc:

var vc:UIViewController? { 
    willSet { 
     print("New value is \(newValue) and old is \(vc)") 
    } 
    didSet { 
     print("Old value is \(oldValue) and new is \(vc)") 
    } 
    } 
0

आप एक नया वस्तु के साथ चर है जिसके द्वारा आप अपने clojure सेट कर सकते हैं प्रारंभ करने की कोशिश नहीं की:

var vc:UIViewController? = UIViewController(){ 
    willSet { 
     print("Old value is \(oldValue)") 
    } 
    didSet(viewController) { 
     print("New value is \(newValue)") 
    } 
} 
संबंधित मुद्दे