Я использую 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)
}
Единственное, что я могу придумать, это то, что "Я" в этом случае является протоколом, а не классом. Однако мне нужно что-то упустить, чтобы эта концепция работала. Реализация по умолчанию метода, определенного протоколом, который редактирует значения, также определенные одним и тем же протоколом.
Спасибо за помощь и время:)