問題タブ [didset]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
swift - Swift: 配列は設定されていますが、アクセスすると空になります
特定の API が呼び出されると設定される配列があります。ただし、後でこの配列にアクセスしようとすると、再び空になります。
問題のクラスは次のようになります。
私が注目している変数は、sourceList 変数です。
ここで、このオブジェクトが作成されるクラスで、次のように SearchableLoginFormField を宣言します。
次に、次のデリゲート メソッドを使用して sourceList を設定します。
これは、空港リストが API 呼び出しから取得されるときに呼び出されます。
ブレーク ポイントは、sourceList が正しく設定されていることを証明します。
- airportsSet() デリゲート メソッドがヒットし、正しい空港リストが含まれている
- SearchableLoginFormField の didSet メソッドが起動され、sourceList が Airports リストに正常に設定されます
- フィールドの編集時に textField デリゲート メソッドをヒットすると、sourceList が空です。configureFormField() メソッドを sourceList の didSet に移動しようとしましたが、同じ結果になりました。
これがどのように設定されているように見えるが、再び空になるのか、私は本当に混乱しています。私は didSet にブレークポイントを保持していますが、他のものによって空に設定されることはありません。
スーパークラスには次の変数が含まれています。
および次の textFieldDelegate メソッド:
したがって、configureFormField メソッドでは、トリガーされるこのデリゲート メソッドのアクションを適宜設定しています。この時点で、sourceList は空です。
フィールド自体は、次のようにメイン ディスプレイ viewController の viewDidLoad に追加されます。