Вы устали от громоздких вызовов API в своем приложении SwiftUI? Не бойтесь, потому что async/await здесь, чтобы спасти положение! В этой статье мы рассмотрим, как выполнять вызовы API с помощью async/await в чистом SwiftUI.
Во-первых, давайте определимся, что такое async/await. Async/await — это новая функция в Swift 5.5, которая позволяет вам писать асинхронный код в синхронном стиле. Это делает ваш код более читаемым и легким для написания, устраняя необходимость в обработчиках завершения или делегированных обратных вызовах.
Теперь давайте углубимся в код. Чтобы сделать вызов API с помощью async/await, вам сначала нужно определить асинхронную функцию, которая возвращает результат. Вот пример:
func fetchData() async throws -> [Post] { let url = URL(string: "https://jsonplaceholder.typicode.com/posts")! let (data, _) = try await URLSession.shared.data(from: url) return try JSONDecoder().decode([Post].self, from: data) }
В этом примере мы определяем асинхронную функцию fetchData
, которая возвращает массив из Post
объектов. Мы используем URLSession
API, чтобы сделать сетевой запрос и дождаться ответа. Наконец, мы декодируем данные ответа, используя JSONDecoder
.
Теперь, когда у нас есть асинхронная функция, мы можем вызывать ее из представления SwiftUI. Вот пример того, как отобразить список постов, полученных из API:
struct ContentView: View { @State var posts: [Post] = [] var body: some View { List(posts) { post in VStack(alignment: .leading) { Text(post.title) .font(.headline) Text(post.body) .font(.subheadline) } } .task { do { posts = try await fetchData() } catch { print(error.localizedDescription) } } } }
В этом примере мы определяем ContentView
, который отображает список сообщений, полученных из API. Мы используем модификатор task
для вызова нашей асинхронной функции fetchData
. При возникновении ошибки мы выводим сообщение об ошибке в консоль.
И вот оно! С помощью всего нескольких строк кода вы можете выполнять вызовы API, используя async/await в чистом SwiftUI. Больше никаких обработчиков завершения или делегированных обратных вызовов!
👋🏿 Если вам понравилась статья и вы хотите поддержать, вы можете Купить мне кофе 😊☕️
В заключение,
async/await — это мощный инструмент, который может упростить ваш асинхронный код в SwiftUI. Это позволяет вам писать код в более синхронном стиле, облегчая чтение и запись. Попробуйте его в своем следующем проекте SwiftUI и увидите разницу!