स्वचालित रूप से परिवर्तित मैं उपयोग कर रहा हूँ स्विफ्ट 2.0, मैं एक प्रोटोकॉल और प्रोटोकॉल के लिए एक विधि का एक डिफ़ॉल्ट कार्यान्वयन के लिए पर एक विस्तार है, कोड fallows के रूप में है:प्रोटोकॉल एक्सटेंशन, समारोह
protocol ColorImpressionableProtocol {
var lightAccentColor: UIColor? {get set}
var accentColor: UIColor? {get set}
var darkAccentColor: UIColor? {get set}
var specialTextColor: UIColor? {get set}
mutating func adoptColorsFromImpresion(impresion: ColorImpressionableProtocol?)
}
extension ColorImpressionableProtocol {
mutating func adoptColorsFromImpresion(impresion: ColorImpressionableProtocol?){
lightAccentColor = impresion?.lightAccentColor
accentColor = impresion?.accentColor
darkAccentColor = impresion?.darkAccentColor
specialTextColor = impresion?.specialTextColor
}
}
मैं बाद में पर हूँ में इस विधि कॉल करने के लिए कोशिश कर रहा है मेरी कोड और ऐसी त्रुटि हो रही है:
"अपरिवर्तनीय मूल्य पर परिवर्तनशील सदस्य का उपयोग नहीं कर सकते हैं: 'स्वयं' अपरिवर्तनीय है"
कोड fallows के रूप में है:
init(impresion: ColorImpressionableProtocol?){
super.init(nibName: nil, bundle: nil)
adoptColorsFromImpresion(impresion)
}
एकमात्र चीज जिसे मैं सोच सकता हूं वह यह है कि इस मामले में 'स्वयं' एक प्रोटोकॉल है, कक्षा नहीं। हालांकि मुझे इस अवधारणा को काम करने के लिए कुछ याद आना है, प्रोटोकॉल द्वारा परिभाषित विधि का एक डिफ़ॉल्ट कार्यान्वयन जो समान प्रोटोकॉल द्वारा परिभाषित मानों को भी संपादित करता है।
आपकी मदद और समय :)
मेरा मानना है कि मैं जो करने की कोशिश कर रहा हूं उसके लिए यह सही वाक्यविन्यास है, परफेक्टो! धन्यवाद – CWineland
मैं sanities खातिर इस पूछने के लिए ... और क्या एक वर्ग के अलावा एक प्रोटोकॉल को लागू कर सकते हैं, क्या उस के खिलाफ की रक्षा है? मुझे बस कोई अन्य परिणाम नहीं दिख रहा है, लेकिन – CWineland
@CWineland के अनुरूप एक वर्ग: प्रोटोकॉल को एक संरचना द्वारा भी कार्यान्वित किया जा सकता है। –