Skip to content

SwiftUI: the ForEach view

The ForEach view in SwiftUI is very useful to iterate over an array, or a range, and generate views that we can use.

For example, here we create 3 Text views that print the numbers from 0 to 2:

ForEach(0..<3) {
    Text("\($0)")
}

$0 means the first argument passed to the closure, which in this case it's (in order) the number 0, 1, and 2.

In this example I embed them in a VStack otherwise they would overlap:

VStack {
    ForEach(0..<3) {
        Text("\($0)")
    }.padding()
}

Notice how I used the padding() modifier to add some spacing

A common way to use ForEach is inside a List view:

List {
    ForEach(0..<3) {
        Text("\($0)")
    }
}

This is such a common thing to do that we can actually omit ForEach and iterate directly from List:

List(0..<3) {
    Text("\($0)")
}

Those 2 examples used a range 0..<3. We can iterate over an array too:

let fruits = ["Apple", "Pear", "Orange"]

//...

List {
    ForEach(fruits, id: \.self) {
        Text("\($0)")
    }
}

Notice how in this case we have another parameter: id.

This is to uniquely identify the item in the array.

Using \.self for id works for built-in types, in case you are iterating a custom struct you'll need that to conform to the Identifiable protocol or provide a unique parameter.

→ Download my free Swift Handbook!

THE VALLEY OF CODE

THE WEB DEVELOPER's MANUAL

You might be interested in those things I do:

  • Learn to code in THE VALLEY OF CODE, your your web development manual
  • Find a ton of Web Development projects to learn modern tech stacks in practice in THE VALLEY OF CODE PRO
  • I wrote 16 books for beginner software developers, DOWNLOAD THEM NOW
  • Every year I organize a hands-on cohort course coding BOOTCAMP to teach you how to build a complex, modern Web Application in practice (next edition February-March-April-May 2024)
  • Learn how to start a solopreneur business on the Internet with SOLO LAB (next edition in 2024)
  • Find me on X

Related posts that talk about swift: