34 items
Loading, Error, and Empty States
Code QuizHandling UI States for Network Calls
QuizAsync REST Call with URLSession
Code QuizAsync REST Calls with URLSession
QuizLoading, Error & Empty States
Slides / VideoREST Calls with Async/Await
Slides / VideoLoading, Error & Empty States
FlashcardREST Calls with async/await
FlashcardRetry Loop Swallows Cancellation
Code QuizResilient HTTP Retries and Backoff
QuizNetwork Reliability: Retries, Timeouts & Connectivity
Slides / VideoNetwork Reliability Basics
FlashcardResilient HTTP on Flaky Networks
Slides / VideoResilient HTTP on Flaky Networks
FlashcardAuth Header and Flaky Connection Config
Code QuizAuth Tokens & Timeouts in URLSession
QuizURLSession Fetch With Loading State
Code QuizHandling Loading and Error States in URLSession
QuizAuth Tokens & Resilient Networking
Slides / VideoURLSession Requests & Loading States
Slides / VideoAuth Tokens & Resilient Requests
FlashcardURLSession Requests & Loading/Error States
FlashcardHandling URLSession Errors Safely
Code QuizDetecting Network Failures
QuizFetching JSON with URLSession
Code QuizChecking HTTP Status Codes
QuizLoading, Errors & Flaky Networks
Slides / VideoREST APIs with URLSession Basics
Slides / VideoHandling Loading, Errors & Flaky Networks
FlashcardREST Requests with URLSession
FlashcardURLSession Errors & Retry Resilience
Slides / VideoREST Calls with URLSession & Async
Slides / VideoHandling Network Errors & Retries
FlashcardREST Calls & Async Responses in URLSession
FlashcardLoading, Error, and Empty States
Spot the bug in a view model that tracks loading, error, and empty UI states.
@MainActor
class FeedViewModel: ObservableObject {
@Published var items: [Post] = []
@Published var isLoading = false
@Published var errorMessage: String?
func load() async {
isLoading = true
errorMessage = nil
do {
let (data, _) = try await URLSession.shared.data(from: feedURL)
items = try JSONDecoder().decode([Post].self, from: data)
isLoading = false
} catch {
errorMessage = error.localizedDescription
}
}
}What is the bug in this view model's state handling?