You want to pass a user's score (an Int) from GameViewController to ResultViewController using a segue with identifier "showResult". Which code snippet correctly passes the score safely?
hard📝 navigation Q15 of 15
iOS Swift - Navigation
You want to pass a user's score (an Int) from GameViewController to ResultViewController using a segue with identifier "showResult". Which code snippet correctly passes the score safely?
Aoverride func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showResult" {
let dest = segue.destination as! ResultViewController
dest.score = userScore
}
}
Boverride func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showResult" {
guard let dest = segue.destination as? ResultViewController else { return }
dest.score = userScore
}
}
Coverride func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let dest = segue.destination as? ResultViewController
dest?.score = userScore
}
Doverride func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showResult" {
let dest = segue.destination
dest.score = userScore
}
}
Step-by-Step Solution
Solution:
Step 1: Check segue identifier and safely cast destination
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showResult" {
guard let dest = segue.destination as? ResultViewController else { return }
dest.score = userScore
}
} uses a guard let to safely cast segue.destination to ResultViewController only if the identifier matches "showResult".
Step 2: Assign the score property safely
Inside the guard, dest.score is assigned userScore safely, avoiding crashes if cast fails.
Final Answer:
Checks identifier and uses guard let for safe casting -> Option B