Swift 4.2を使用すると、多くの問題が発生し始めました。そのうちの1つは、ゲッターメソッドが値自体を返す必要があるため、解決方法がわからないということです。
何が起こっているのかと思いますが、ゲッターはself.typeを呼び出すときにゲッターにアクセスしようとします
この問題を解決するにはどうすればよいですか?
以下は、エラーのあるコードのスクリーンショットです。
前もって感謝します
ここに書かれたコードがあります
@objc var type: DecisionType {
set {
if(newValue == DecisionType.DecisionDouble){
//Yes button and NO button should be showing
okButton.isHidden = true;
yesButton.isHidden = false;
noButton.isHidden = false;
}
else {
//Only Ok button should be showing
okButton.isHidden = false;
yesButton.isHidden = true;
noButton.isHidden = true;
}
}
get {
return self.type;
}
};
あなたの問題は、ゲッターが返すための保存されたプロパティtype
がないことです。 type
は計算されたプロパティです。その値を読み取ろうとすると、定義したゲッターが呼び出されます。このゲッターはゲッターを呼び出し、ゲッターはゲッターを呼び出し、ゲッターはゲッターを呼び出します...など。無限の再帰があります。
ほとんどの場合、あなたが意図したことは、プロパティが設定されているときはいつでもいくつかの派手な動作をするだけのプロパティを保存していることです。カスタムget
およびset
で計算されたプロパティを使用するのではなく、willSet
またはdidSet
ブロックで保存されたプロパティを使用します。
@objc var type: DecisionType {
didSet {
let isDecisionDouble = newValue == DecisionType.DecisionDouble
okButton.isHidden = isDecisionDouble;
yesButton.isHidden = !isDecisionDouble;
noButton.isHidden = !isDecisionDouble;
}
}