Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

iOS Swift Basics (retired) Control Flow If Statement

what is wrong in this let months = [1, 2, 3] for month in months { if months[month] == 1 { println("January") }}

let months = [1, 2, 3]

for month in months { if months[month] == 1 { println("January") } else if months[month] == 2 { println("February") } else if months[month] == 3 { println("March") } }

months.swift
let months = [1, 2, 3]

for month in months
{
if months[month] == 1
{
println("January")
}
else if months[month] == 2
{
println("February")
}
else if months[month] == 3
{
println("March")
}
}

1 Answer

Hi there,

When you use a for loop like this, the loop iterates through each element of the array and performs whatever code is inside the loop on each element in turn.

The loop uses a variable to hold each element in your case, that variable is month. So the line for month in months says to the compiler, "we're going to iterate through every element of the array months one element at a a time - put each element's value in the variable called month one by one."

So, where you have if months[month] == 1 what you really to put is if month == 1 as the vriable month with hold the value 1 on the first loop, 2 on the second, and so on. If you were using a more traditional for loop that was incrementing from zero, for example, you could then use months[i] but the use of the for/each/in construction means you can bypass that.

Please let me know if that makes sense else I'll try again!

Steve.

let months = [1, 2, 3]

for month in months {
  if month == 1 {
    println("January")
  }
  else if month == 2 {
    println("February")
  }
  else if month == 3 {
    println("March")
  }
}