Ich verwende swift 2.0, ich habe ein Protokoll und eine Erweiterung auf dem Protokoll eine Standardimplementierung eines Verfahrens zu schaffen, wird der Code wie Brachen:Protokollerweiterung, Mutierende Funktion
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
}
}
Ich bin später in meinem Code versucht, diese Methode aufzurufen und eine Störung erhalte, der lautet:
„mutiert Mitglied verwenden, können nicht auf unveränderlichen Wert:‚selbst‘ist unveränderlich“
Der Code als Brachen ist:
init(impresion: ColorImpressionableProtocol?){
super.init(nibName: nil, bundle: nil)
adoptColorsFromImpresion(impresion)
}
Das einzige, was mir einfällt ist, dass "Self" in diesem Fall ein Protokoll ist, keine Klasse. Allerdings muss mir etwas fehlen, damit dieses Konzept funktioniert. Eine Standardimplementierung einer Methode, die von einem Protokoll definiert wird, das Werte bearbeitet, die ebenfalls vom selben Protokoll definiert werden.
Vielen Dank für Ihre Hilfe und Zeit :)
Ich glaube, das ist die richtige Syntax für das, was ich versuche, Perfecto! Vielen Dank – CWineland
Ich muss dies um der Vernunft willen fragen ... was kann außer einer Klasse ein Protokoll implementieren, wogegen schützt das? Ich sehe nur kein anderes Ergebnis, aber eine Klasse, die damit konform ist – CWineland
@Cwineland: Protokolle können auch durch eine Struktur implementiert werden. –