Fetching remote data in SwiftUI
One of the operations made easier by the async
await
model is network operations. Fetching data from a network resource is an asynchronous operation by definition and until now, we had to manage it with the callback mechanism.
iOS 15 adds an async
await
interface to the URLSession
class to embrace the new pattern. In this recipe, we'll implement a class to download data from a remote service and present it in a SwiftUI view.
We'll use a free service called SpamWords (https://www.spam-words.com) that hosts a list of words to detect if a message is spam or not. The services have multiple lists, grouped by language.
The app we'll implement will have a view to select the language and another view to present the spam words for the language we selected.
Getting ready
Create an Xcode 13 SwiftUI app called SpamWords
. After creating it, be sure to set the target deploy to iOS 15.
How to do it…
We are going to implement...