📖 Scenario: You are managing a simple database of users and their ages. You want to find users who are adults (18 years or older) to send them a special offer.
🎯 Goal: Build a Swift program that uses a for-in loop with a where clause to filter and collect users who are 18 or older.
📋 What You'll Learn
Create a dictionary called users with these exact entries: "Alice": 17, "Bob": 20, "Charlie": 16, "Diana": 22
Create an empty array of strings called adultUsers to store names of adult users
Use a for-in loop with a where clause to iterate over users and select only those with age 18 or older
Inside the loop, append the user's name to adultUsers
💡 Why This Matters
🌍 Real World
Filtering data based on conditions is common in databases and apps, like selecting users eligible for offers.
💼 Career
Understanding loops with conditions helps in writing efficient queries and data processing code in many programming jobs.
Progress0 / 4 steps
1
Create the users dictionary
Create a dictionary called users with these exact entries: "Alice": 17, "Bob": 20, "Charlie": 16, "Diana": 22
Swift
Hint
Use square brackets [] to create the dictionary and separate entries with commas.
2
Create the adultUsers array
Create an empty array of strings called adultUsers to store names of adult users
Swift
Hint
Use var to create a mutable array and specify the type as [String].
3
Use for-in loop with where clause
Use a for-in loop with a where clause to iterate over users and select only those with age 18 or older. Use for (name, age) in users where age >= 18
Swift
Hint
The where clause filters the loop to only run for users 18 or older.
4
Complete the filtering logic
Ensure the for-in loop with where clause appends the user's name to adultUsers inside the loop body
Swift
Hint
Use the append method on adultUsers to add the name inside the loop.
Practice
(1/5)
1. What does the where clause do in a for-in loop in Swift?
easy
A. It repeats the loop twice for each item.
B. It changes the type of the loop variable.
C. It filters items so the loop runs only on those that meet the condition.
D. It stops the loop after the first item.
Solution
Step 1: Understand the role of where in a loop
The where clause adds a condition to filter items during iteration.
Step 2: Effect on loop execution
Only items that satisfy the where condition are processed in the loop.
Final Answer:
It filters items so the loop runs only on those that meet the condition. -> Option C
Quick Check:
where filters loop items [OK]
Hint: Remember: where filters items in the loop [OK]
Common Mistakes:
Thinking where changes variable type
Assuming it repeats the loop multiple times per item
Believing it stops the loop early
2. Which of the following is the correct syntax for using a where clause in a Swift for-in loop?
easy
A. for item where item.isActive in items { print(item) }
B. for item in items where item.isActive { print(item) }
C. for item in items if item.isActive { print(item) }
D. for item in items; where item.isActive { print(item) }
Solution
Step 1: Recall correct for-in where syntax
The correct syntax places where after the sequence: for variable in sequence where condition.
Step 2: Check each option
Only for item in items where item.isActive { print(item) } matches the correct syntax. The other options have misplaced or incorrect keywords: where before in, if instead of where, or a semicolon before where.
Final Answer:
for item in items where item.isActive { print(item) } -> Option B
Quick Check:
Correct where syntax [OK]
Hint: Put where right after in sequence [OK]
Common Mistakes:
Placing where before in
Using if instead of where
Adding semicolon before where
3. Given the array let numbers = [1, 2, 3, 4, 5], what will this code print?
for num in numbers where num % 2 == 0 {
print(num)
}
medium
A. 2 4
B. 1 2 3 4 5
C. 1 3 5
D. No output
Solution
Step 1: Understand the loop and condition
The loop iterates over numbers and prints only those where num % 2 == 0, meaning even numbers.
Step 2: Identify even numbers in the array
From [1, 2, 3, 4, 5], the even numbers are 2 and 4.
Final Answer:
2 4 -> Option A
Quick Check:
Print even numbers = 2 4 [OK]
Hint: Check condition filters even numbers only [OK]
Common Mistakes:
Printing odd numbers instead
Printing all numbers ignoring where
Expecting no output
4. What is wrong with this Swift code?
let names = ["Anna", "Bob", "Cara"]
for name where name.hasPrefix("A") in names {
print(name)
}
medium
A. The where clause is placed before in incorrectly.
B. The array names is not declared properly.
C. The hasPrefix method does not exist.
D. The loop variable name should be a constant.
Solution
Step 1: Check the for-in where syntax
The where clause must come after in sequence, not before.
Step 2: Identify the syntax error
The code places where before in names, which is invalid syntax.
Final Answer:
The where clause is placed before in incorrectly. -> Option A
Quick Check:
where must follow in [OK]
Hint: Always put where after in [OK]
Common Mistakes:
Placing where before in
Assuming hasPrefix is invalid
Thinking loop variable must be var
5. You have a list of user records as dictionaries: