Узнайте, как асинхронно загружать изображения из URL-адреса и кэшировать их в SwiftUI.

В этом проекте мы будем загружать изображение с удаленного URL-адреса и реализовывать кэширование, чтобы наше приложение не делало сетевые запросы снова и снова.

Мы знаем, что SwiftUI в настоящее время не позволяет что-то вроде

Image("https://url-of-image")

Давайте начнем с того, как достичь вышеуказанной функциональности. Я разделю определения на три разных файла, чтобы сделать код более читабельным.

  1. ContentView — это ваше представление, в котором вы передаете удаленный URL-адрес ImageView.
  2. ImageView — визуализировать изображение из URL
  3. ImageModel — выборка изображений и логика кэширования.

Давайте внимательно посмотрим на все три файла,

Просмотр содержания:

Мы просто добавляем изображение сюда на экран

Просмотр изображения:

RemoteImageModel:

В этом классе происходит все волшебство. Он берет URL-адрес и запускает его через кеш. Если это попадание в кеш, изображение возвращается из кеша, если нет, мы создаем асинхронный запрос для загрузки новых данных.

Вот и все! Ваш код теперь работает!!

Это похоже на много кода для загрузки изображения с удаленного URL-адреса. Для опытных просто создайте новый файл и назовите его «ImageViewController.swift», скопируйте в него следующий код и вызовите его из ImageContentView.swift, упомянутого выше.

SwiftUI все еще очень молод, и у него нет огромного сообщества и поддержки на Stack Overflow и других подобных платформах. Давайте создадим сообщество вместе и поддержим создание потрясающих продуктов!