Използвам swift 2.0, имам протокол и разширение на протокола, за да създам изпълнение по подразбиране на метод, кодът е както следва:
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
}
}
По-късно в моя код се опитвам да извикам този метод и получавам грешка, която гласи:
"не може да използва мутиращ член на неизменна стойност: 'self' е неизменен"
Кодът е както следва:
init(impresion: ColorImpressionableProtocol?){
super.init(nibName: nil, bundle: nil)
adoptColorsFromImpresion(impresion)
}
Единственото нещо, за което мога да се сетя, е, че "Self" в този случай е протокол, а не клас. Въпреки това трябва да ми липсва нещо, за да накарам тази концепция да работи, внедряване по подразбиране на метод, дефиниран от протокол, който редактира стойности, дефинирани също от същия протокол.
Благодаря ви за помощта и отделеното време :)