2

これがシナリオです。A、、、の 3 つのクラスがBありCます。クラスAは のサブクラスですB。クラスCは、そのインスタンス変数の 1 つをクラスに渡す必要がありますA(それを と呼びましょうb)。がnilである状況に遭遇しないようにするために、C初期化時にそれが発生することを確認したいと思います。との構造は次のとおりです。AbAB

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. 私はこれに間違ったアプローチをしていますか? 私が使用すべき別のパターンはありますか?

ありがとう!

4

1 に答える 1