私は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を比較してください。 @ MartinsR ummm。 –
OK。ここの答えは間違っていますか? – Honey
あなたの*質問*は 'private(set)'をコンパイルする方法です*答えは正しいようです。私のポイントは、コンパイルしてもsetterの 'keyboardLabel = newValue'の*実装*が意図したとおりに動作しないということです。 –