「ForEachって何?」
「ForEachの使い方を知りたい」
「ForEachってどうやって使えばいいの?」
と言う人に向けて、この記事は書かれています。
どうも、ちょげ(@chogetarou)です。
この記事では、SwiftUIのForEachの使い方について解説します。
ForEachとは

まず、ForEachとは、繰り返し処理をする構造体です。
for-in文のように制御構文と同じに見えますが、ForEachは、構造体である点が違います。
ForEachは、繰り返しビューを定義する際に使われます。
ForEach構造体の使い方
イニシャライザ
ForEach構造体のイニシャライザは、以下のようになっています。
init(data, id, content)
- data
繰り返しに使用するコレクション(配列などのデータの集まり) - id(キーパス)
dataの要素を特定する識別子 - content(クロージャー)
繰り返し生成するビュー
使用例

数値の繰り返し

数値の範囲を指定して繰り返すのは次のように書きます。
VStack {
ForEach(1...5, id: \.self) { index in
Text("\(index)")
}
}
まず、1から5までの数値を渡しています。
次にidに、キーパスとして、\.selfを指定しています。
\.selfは、1から5の数値自信をidとする指定方法です。
idについてよく分からないと言う人は、\.selfを指定すれば大丈夫です。
最後のクロージャには、「〜 in」を書くことで、dataから取り出した値を〜で変数として扱えます。
配列

配列に対して、繰り返し処理をしたい場合には、次のように書きます。
var lang = ["swift", "kotlin", "c", "java", "python"]
var body: some View {
VStack {
ForEach(lang, id: \.self) { i in
Text(i)
}
}
}
数値で指定していた部分を、配列名に変えるだけです。
Listを動的に作る

ForEachは、Listのビューを動的に作る際に役立ちます。
特別な処理などはなく、List内にForEach文を記述すれば、Listビューを動的に作ることが出来ます。
先程の配列の例であれば、
var lang = ["swift", "kotlin", "c", "java", "python"]
var body: some View {
List {
ForEach(lang, id: \.self) { i in
Text(i)
}
}
}
のように書くことが出来ます。
Listの他にも、ビュー内にビューをいくつも定義するような場合には、ForEachが役に立ちます。
まとめ
- ForEachは、繰り返して、ビューを定義することが出来る構造体
- データ、id、コンテンツの3つの引数が必要
- idは、基本的に\.selfでOK
- クロージャの最初に「〜 in」と書くことで、取り出した要素を変数として使える
- Listと組み合わせて使われることが多い
合わせて読みたい記事
終わりに
読んで頂きありがとうございました。
少しでも参考になれば嬉しいです。
では、サラダばー!
コメント