これがシナリオです。A
、、、の 3 つのクラスがB
ありC
ます。クラスA
は のサブクラスですB
。クラスC
は、そのインスタンス変数の 1 つをクラスに渡す必要がありますA
(それを と呼びましょうb
)。がnilである状況に遭遇しないようにするために、C
初期化時にそれが発生することを確認したいと思います。との構造は次のとおりです。A
b
A
B
class B {
var a: Type1
required init(a: Type) {
...
}
}
class A : B {
var b: Type2
...
}
Swift の規則では、オプションではない、または暗黙的にラップ解除されていない変数は、初期化時に定義する必要があると規定されています。ただし、B の init を実装する必要があるため (B を制御することはできません。Apple から提供されています)、A の初期化子に追加のパラメーターを追加できないため、それを保証することはできません。
A(b)
A がorA(a,b)
で呼び出されていることを確認したいのですがA(a)
、 b が初期化されていることを確認します。解決策を探したり、プロトコルや拡張機能を使用した解決策を考えたりしましたが、わかりませんでした。私が答えにたどり着いたのはこの答えによるものですが、それは私が望むことを実際には行いません。
2 つの質問があります (一方は他方を無効にします): 1. [明らかなもの] これに対する解決策はありますか? (本当に明らかな何かが欠けているのでしょうか?) 2. 私はこれに間違ったアプローチをしていますか? 私が使用すべき別のパターンはありますか?
ありがとう!