나는 readOnly 레이블이있는 프로토콜을 작성하고 있습니다. 이를 확장하여 일치하는 유형이 UITextView
인 기본 구현을 제공하고자합니다.어떻게 프로토콜을 개인용으로 확장 할 수 있습니까?
코드 :
protocol CountingView {
var keyboardLabel : UILabel {get}
}
extension CountingView where Self : UITextView {
var keyboardLabel : UILabel {
get {
let label = UILabel()
label.textColor = UIColor.white
label.translatesAutoresizingMaskIntoConstraints = false
return label
}
private (set) {
keyboardLabel = newValue
}
}
}
그러나 나는 다음과 같은 오류를 얻을 set
전에 private
를 추가 할 때.
예상 '수', '설정', 'willSet'또는 'didSet'키워드는 내가이 오류와 함께 다른 질문을 보았지만 찾지 않았던 접근 정의
를 시작합니다 그들은 내 것과 관련이 있습니다.
확장 * 할 수 없습니다 * 저장된 속성을 추가 할 수 있습니다. 세터는 반복적으로 자신을 호출합니다. https://stackoverflow.com/questions/44063181/protocol-extension-in-swift-3을 비교하십시오. –
@ MartinR ummm. 승인. 여기서 답이 잘못되었다는 뜻입니까? – Honey
글쎄, 당신의 * 질문은'private (set)'컴파일하는 법이다. * 대답은 정확할 것 같다. 필자가 컴파일 할 경우에도 setter'keyboardLabel = newValue'의 * 구현 *이 의도 한대로 작동하지 않는다는 것이 요점입니다. –