Bird
0
0

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:
  1. 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".
  2. Step 2: Assign the score property safely

    Inside the guard, dest.score is assigned userScore safely, avoiding crashes if cast fails.
  3. Final Answer:

    Checks identifier and uses guard let for safe casting -> Option B
  4. Quick Check:

    Safe cast + identifier check = override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "showResult" { guard let dest = segue.destination as? ResultViewController else { return } dest.score = userScore } } [OK]
Quick Trick: Use guard let with identifier check for safe data passing [OK]
Common Mistakes:
  • Forcing cast without identifier check (Option A)
  • Not checking identifier before casting (Option B)
  • Not casting destination at all (Option D)

Want More Practice?

15+ quiz questions · All difficulty levels · Free

Free Signup - Practice All Questions
More iOS Swift Quizzes