ビューの状態からモデルクラスへ
共有データをクラスに切り出します。
「ビューの状態からモデルクラスへ」はCoddyKit上の無料SwiftUI Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwiftUI Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 SwiftUI Academyコースには全4レッスンが含まれています。
@Stateでは足りなくなるとき
画面に多くの@State値があると、ビューはデータとUIを同時に扱うことになります。画面が大きくなるにつれて、すぐに複雑になってしまいます。 🤔
モデルが保持するもの
modelはデータとそれに関するルールを保持する通常のオブジェクトで、画面上の見た目とは分離されています。
シンプルなモデルクラス
まず、関連する値を1つのclassに移し、整理された1か所にまとめます。
class Counter {
var count = 0
}メソッドにロジックを持たせる
methodsを使ってデータの近くに振る舞いを配置します。ビューは自分で処理せず、モデルに実行を依頼するだけになります。
class Counter {
var count = 0
func increment() { count += 1 }
}structではなくclassを使う理由
classは参照型なので、同じインスタンスを共有するすべてのビューが、それぞれのコピーではなくまったく同じデータを確認できます。
ビューを薄く保つ
ロジックをモデルに置くと、ビューのbodyはほぼレイアウトだけになります。薄いビューは、後から読みやすく変更もしやすくなります。
1つの真実のソース
データをモデルに保持するとsource of truthが1つになるため、画面ごとに現在の値が食い違うことがありません。
モデルを再利用する
モデルはビューから独立しているため、複数の画面やテストでも再利用できます。
ビューで保持する
ビューはモデルのインスタンスをプロパティとして作成・保持できます。値の読み取りやmethodsの呼び出しもすぐに行えます。
struct CounterView: View {
let model = Counter()
var body: some View { Text("Count") }
}足りない要素
ここまでのビューはモデルを読み取れますが、データが変わっても更新されません。次は観測機能を使ってこれを解決します。
関心の分離
この分割をseparation of concernsと呼びます。ビューは表示し、モデルは判断します。それぞれに明確な役割があります。
確認テスト
データをclassに移しました。理由について確認しましょう。
まとめ
データとロジックをビューからmodel classへ移し、ビューを薄くして、アプリに1つの真実のソースを持たせる方法を学びました。 ✨
AI チューターと学ぶ Swift — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 30
- レッスン
- 120
よくある質問
「ビューの状態からモデルクラスへ」レッスンは無料ですか?
はい。「ビューの状態からモデルクラスへ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、SwiftUI Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 SwiftUI Academyコースには全4レッスンが含まれています。
「ビューの状態からモデルクラスへ」で何を学びますか?
共有データをクラスに切り出します。 ブラウザで直接実行するハンズオンコードでSwiftUI Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
SwiftUI Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSwiftUI Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「ビューの状態からモデルクラスへ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSwiftUI Academyレッスンでコードを書いて実行できますか?
はい。すべてのSwiftUI Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ビューの状態からモデルクラスへ
- @Observableマクロ
- 所有するオブジェクトに@Stateを使う
- @Environmentでモデルを共有する