What is the main purpose of error handling in network calls?
To manage problems like no internet, server errors, or bad data so the app can respond gracefully and inform the user.
Click to reveal answer
beginner
Which Swift type is commonly used to represent success or failure in network calls?
The Result type, which has two cases: .success for successful data and .failure for errors.
Click to reveal answer
intermediate
What Swift keyword is used to catch errors thrown during a network call?
The do-catch block is used to try code that can throw errors and handle those errors in the catch section.
Click to reveal answer
intermediate
Why should you check the HTTP status code in a network response?
Because a network call can succeed at the connection level but still return an error status like 404 or 500, which means the request failed.
Click to reveal answer
beginner
What is a common way to inform users about network errors in an iOS app?
Showing an alert or message on screen explaining the problem, like "No internet connection" or "Server unavailable."
Click to reveal answer
Which Swift type helps handle success and failure in network calls?
ADictionary
BResult
CArray
DOptional
✗ Incorrect
The Result type clearly separates success and failure cases, making error handling easier.
What does a 404 HTTP status code mean?
ANot Found
BSuccess
CServer Error
DUnauthorized
✗ Incorrect
404 means the requested resource was not found on the server.
Which Swift construct is used to catch errors thrown by functions?
Aswitch
Bguard
Cif-let
Ddo-catch
✗ Incorrect
do-catch blocks are designed to handle errors thrown by functions.
What should you do if a network call fails due to no internet?
AIgnore the error
BCrash the app
CShow a user-friendly message
DRetry forever without limit
✗ Incorrect
Informing the user helps them understand the problem and possibly fix it.
In Swift, how do you represent an error in a Result type?
A.failure
B.success
C.error
D.none
✗ Incorrect
The .failure case holds the error information.
Explain how you would handle errors when making a network call in Swift.
Think about how to catch errors, check response, and show messages.
You got /4 concepts.
Describe why it is important to check the HTTP status code after a network call.
Not all network connections that succeed mean the request was successful.
You got /3 concepts.
Practice
(1/5)
1. What is the main purpose of the error parameter in a network call's completion handler in Swift?
easy
A. To update the UI directly from the background thread
B. To store the data returned from the server
C. To specify the URL of the network request
D. To check if the network request failed and handle the failure
Solution
Step 1: Understand the role of the error parameter
The error parameter indicates if something went wrong during the network request. Developers check this parameter to detect failures and respond appropriately, like showing an alert.
Final Answer:
To check if the network request failed and handle the failure -> Option D
Quick Check:
Error parameter = check failure [OK]
Hint: Error parameter signals failure in network calls [OK]
Common Mistakes:
Confusing error with data parameter
Trying to update UI directly from background thread
Ignoring error and assuming success
2. Which of the following is the correct syntax to check for an error in a Swift network call completion handler?
easy
A. if error == nil { print("Error occurred") }
B. if error != nil { print("Error occurred") }
C. if error = nil { print("Error occurred") }
D. if error != false { print("Error occurred") }
Solution
Step 1: Recall error checking syntax in Swift
To check if an error exists, use if error != nil. Using != nil means an error was found, so handle it.
Final Answer:
if error != nil { print("Error occurred") } -> Option B
Quick Check:
Check error with != nil [OK]
Hint: Use 'if error != nil' to detect errors [OK]
Common Mistakes:
Using assignment '=' instead of comparison '=='
Checking error == nil to detect error (wrong logic)
Comparing error to false instead of nil
3. Consider this Swift code snippet for a network call:
URLSession.shared.dataTask(with: url) { data, response, error in
if let error = error {
print("Error: \(error.localizedDescription)")
} else {
print("Success")
}
}.resume()
What will be printed if the network request fails due to no internet connection?
medium
A. Error: The Internet connection appears to be offline.
B. No output
C. Success
D. Crash due to unwrapped nil
Solution
Step 1: Trace the code on network failure
The code uses optional binding if let error = error which succeeds when error is not nil, printing the localized description like "The Internet connection appears to be offline." for no internet.
Final Answer:
Error: The Internet connection appears to be offline. -> Option A
Quick Check:
Error prints localizedDescription [OK]
Hint: Error prints message; success prints 'Success' [OK]
Common Mistakes:
Assuming success prints even on error
Expecting crash from optional binding
Ignoring error and printing nothing
4. This Swift code attempts to handle a network error but has a logic error:
URLSession.shared.dataTask(with: url) { data, response, error in
if error == nil {
print("No error")
} else {
print(error!.localizedDescription)
}
}.resume()
What is the likely cause of the logic error?
medium
A. Not calling resume() on the data task
B. Force unwrapping error when it is nil
C. Using error == nil instead of error != nil
D. Printing error.localizedDescription without checking error
Solution
Step 1: Analyze the logic and best practice
The code checks if error == nil for success first, then handles error in else (safe unwrap). While functional, best practice is to check if error != nil first to explicitly handle failures before success.
Final Answer:
Using error == nil instead of error != nil -> Option C
Quick Check:
Error check logic reversed [OK]
Hint: Check error != nil to handle errors safely [OK]
Common Mistakes:
Reversing error check logic
Force unwrapping error without check
Not calling resume() on data task
5. You want to update a label's text after a network call completes. Which is the correct way to handle errors and update the UI safely in Swift?
URLSession.shared.dataTask(with: url) { data, response, error in
// Handle error and update label
}
hard
A. Check if error != nil, then update label text inside DispatchQueue.main.async block
B. Update label text directly inside the completion handler without dispatching
C. Ignore error and update label text on background thread
D. Use try-catch inside the completion handler to update label
Solution
Step 1: Handle threading and errors for UI updates
Completion handlers run on background threads, so dispatch UI updates to main. First check if error != nil to handle failure (e.g., update label with error message), using DispatchQueue.main.async.
Final Answer:
Check if error != nil, then update label text inside DispatchQueue.main.async block -> Option A
Quick Check:
UI updates on main thread after error check [OK]
Hint: Always update UI on main thread after error check [OK]
Common Mistakes:
Updating UI on background thread causing crashes
Ignoring error and updating UI blindly
Using try-catch incorrectly for async callbacks
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.