2016-04-06 7 views
20

एक सुपर क्लास:कैसे स्विफ्ट में सेटर ओवरराइड करने के लिए

class MySuperView : UIView{ 
    var aProperty ; 
} 

एक उपवर्ग विरासत सुपर वर्ग:

class Subclass : MySuperClass{ 
    // I want to override the aProperty's setter/getter method 
} 

मैं सुपर क्लास की संपत्ति के सेटर/गेटर विधि ओवरराइड करना चाहते,

कैसे स्विफ्ट में इस विधि को ओवरराइड करने के लिए? कृपया मेरी मदद करो, धन्यवाद।

उत्तर

35

आप अपने कस्टम सेटर के साथ क्या करना चाहते हैं? 0

didSet से

WillSet Avar 5: इससे पहले कि आप कुछ करने के लिए वर्ग चाहते हैं/के बाद मान सेट है, तो आप willSet/didSet उपयोग कर सकते हैं:

class TheSuperClass { 
    var aVar = 0 
} 

class SubClass: TheSuperClass { 
    override var aVar: Int { 
     willSet { 
      print("WillSet aVar to \(newValue) from \(aVar)") 
     } 
     didSet { 
      print("didSet aVar to \(aVar) from \(oldValue)") 
     } 
    } 
} 


let aSub = SubClass() 
aSub.aVar = 5 

कंसोल आउटपुट 0

यदि, हालांकि, आप पूरी तरह से बदलना चाहते हैं कि सेटटर सुपरक्लास के साथ कैसे इंटरैक्ट करता है:

class SecondSubClass: TheSuperClass { 
    override var aVar: Int { 
     get { 
      return super.aVar 
     } 
     set { 
      print("Would have set aVar to \(newValue) from \(aVar)") 
     } 
    } 
} 

let secondSub = SecondSubClass() 
print(secondSub.aVar) 
secondSub.aVar = 5 
print(secondSub.aVar) 

कंसोल आउटपुट:

से 5 Avar की स्थापना की है चाहेंगे
+0

मेरी समस्या को हल करने के लिए धन्यवाद, धन्यवाद – user5465320

+3

यहाँ है ऐप्पल से पूरा विवरण: https://developer.apple.com/library/content/ प्रलेखन/स्विफ्ट/अवधारणात्मक/स्विफ्ट_Programming_भाषा/Inheritance.html - ओवरराइडिंग गुण – tim

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