XCode 12.4 日本語化計画:Swift Tutorials
ユーザー入力の処理
セクション 5
ModelData オブジェクトを作成したので、ビューを更新して、アプリのデータ保管場所として採用する必要があります。
ステップ 1
LandmarkList.swift で、@EnvironmentObject プロパティ宣言をビューに追加し、environmentObject(_:) 修飾子をプレビューに追加します。
environmentObject(_:) 修飾子が親に適用されている限り、modelData プロパティはその値を自動的に取得します。
ステップ 2
ランドマークをフィルタリングするときは、modelData.landmarks をデータとして使用しましょう。
ステップ 3
LandmarkDetail ビューを更新して、環境 (environment) 内の ModelData オブジェクトを操作します。
ステップ 4
LandmarkRow プレビューを更新して、 ModelData オブジェクトで機能するようにします。
ステップ 5
ContentView プレビューを更新して、モデルオブジェクトを環境 (environment) に追加します。これにより、オブジェクトをすべてのサブビューで使用できるようになります。
サブビューに環境 (environment) 内のモデルオブジェクトが必要な場合、プレビューは失敗しますが、プレビューをしているビューには environmentObject(_:) 修飾子がありません。
次に、アプリインスタンスを更新して、シミュレータまたはデバイス上でアプリを実行するときにモデルオブジェクトを環境 (environment) に配置します。
ステップ 6
LandmarksApp を更新してモデルインスタンスを作成し、environmentObject(_:) 修飾子を使用して ContentView に提供します。
@StateObject 属性を使用して、アプリの寿命中に 1 回だけ与えられたプロパティのモデルオブジェクトを初期化します。これは、ここに示すように、アプリインスタンスで属性を使用する場合、およびビューで使用する場合に当てはまります。
ステップ 7
LandmarkList.swift に戻り、ライブプレビューをオンにして、すべてが正しく機能していることを確認して下さい。
    LandmarkList.swift
上記のリストの 8 行目を以下のように書き換えます。
    LandmarkDetail.swift
    LandmarkRow.swift
    ContentView.swift
    LandmarksApp.swift
セクション 1 | セクション 2 | セクション 3 |
セクション 4 | セクション 5 | セクション 6 |
セクション 101 | セクション 102 | セクション 103 |
セクション 104 | セクション 105 | セクション 106 |