Using .allSatisfy in Swift
You'll often find yourself in a position where you need to check if a particular condition applies across a collection of objects. Luckily, Swift provides the allSatisfy() method to handle just that.
Let's say we want to write a function to verify that a student has completed all of the requirements for graduation.
Initially, you might write something like this:
struct Prerequisite {
var isCompleted: Bool
var courseName: String
}
struct Student {
let degreeRequirements = [
Prerequisite(isCompleted: true,
courseName: "Introduction to Programming"),
Prerequisite(isCompleted: true,
courseName: "Discrete Mathematics"),
Prerequisite(isCompleted: true,
courseName: "Mathematics for Algorithms and Systems"),
Prerequisite(isCompleted: true,
courseName: "Advanced Data Structures"),
Prerequisite(isCompleted: true,
courseName: "Theory of Computability"),
Prerequisite(isCompleted: true,
courseName: "Ubiquitous Computing")
]
func canGraduate() -> Bool {
for requirement in degreeRequirements {
if !requirement.isCompleted {
return false
}
}
return true
}
}Or, you might get fancy and use filter instead:
func canGraduate() -> Bool {
// Filters by failed prerequisites
// If the list is empty, the user can graduate
degreeRequirements.filter { $0.isCompleted == false }.isEmpty
}return keyword.While these approaches all certainly work, we can simplify this expression even further using the underutilized allSatisfy function:
func canGraduate() -> Bool {
// Only returns true if all items in degreeRequirements
// satisfy the requirement
degreeRequirements.allSatisfy { $0.isCompleted }
}This approach is far more readable than the previous option, and anyone reading this code can immediately see the exact requirements that will cause this function to return true.
If you're interested in more articles about iOS Development & Swift, check out my YouTube channel or follow me on Twitter.
If you're an indie iOS developer, make sure to check out my newsletter:

I feature a new developer every issue, so feel free to submit your indie iOS apps!
Do you have an iOS Interview coming up?
Check out my book Ace The iOS Interview!
