Sbat2000/imageFeedTestApp

★ 0Forks 0SwiftGitHub ↗Compare

README

ImageFeedTestApp

ImageFeedTestApp — это приложение для поиска и просмотра изображений с использованием API Unsplash. Оно поддерживает динамическую загрузку контента, работу с кэшированием изображений, пагинацию и детальный просмотр информации о каждом изображении. Приложение построено на архитектуре MVVM с использованием асинхронной обработки данных и библиотеки Combine.

Важно: Получение API ключа для Unsplash

Для корректной работы приложения необходимо получить API ключ от сервиса Unsplash.

Шаги для получения API ключа:

  1. Перейдите на Unsplash Developers и зарегистрируйтесь или войдите в свою учетную запись.
  2. Создайте новое приложение, указав необходимые данные (название приложения, описание и т.д.).
  3. После создания приложения вы получите Access Key и Secret Key. Вам потребуется Access Key для работы с API.

Вставка API ключа:

После получения ключа, откройте файл UnsplashSearchRequest и вставьте ваш API ключ в соответствующее место:

// TODO: Вставьте сюда ваш API ключ
let apiKey = "ВАШ_API_КЛЮЧ"

Особенности приложения

  • Поиск изображений через Unsplash API.
  • Пагинация изображений: загружаются дополнительные страницы при прокрутке вниз.
  • Кэширование изображений для уменьшения сетевой нагрузки и ускорения работы.
  • Просмотр детальной информации о каждом изображении, возможность поделиться изображением или сохранить его в галерею.
  • История поиска: сохраняет последние поисковые запросы для повторного использования.
  • Интерфейс пользователя с использованием UICollectionViewDiffableDataSource и UICollectionViewCompositionalLayout.

Стек технологий

1. MVVM (Model-View-ViewModel)

  • Использование MVVM позволяет разделить логику представления (UI) и бизнес-логику. Это упрощает поддержку и тестирование приложения.

2. Combine

  • Библиотека Combine используется для обработки асинхронных событий, что позволяет обновлять пользовательский интерфейс при изменении данных.

3. URLSession

  • Для загрузки данных из сети используется URLSession. В сервисе загрузки изображений эта технология обеспечивает безопасную и эффективную работу с сетевыми запросами.

4. Кэширование с помощью NSCache

  • Для кэширования изображений используется NSCache. Это позволяет повторно использовать загруженные изображения без необходимости загружать их из сети при каждом использовании.

5. Diffable Data Source и Compositional Layout

  • Использование UICollectionViewDiffableDataSource и UICollectionViewCompositionalLayout обеспечивает гибкость интерфейса коллекций и поддержку анимаций при изменении данных.

6. Пагинация

  • Пагинация реализована для динамической загрузки дополнительных изображений при прокрутке вниз.

7. Асинхронная обработка с async/await

  • Использование async/await упрощает работу с асинхронными операциями, делая код более читаемым и поддерживаемым.

Архитектура

1. ViewModel

  • В ViewModel сосредоточена основная логика работы с данными, такие как сетевые запросы, управление состояниями (загрузка, ошибка, контент) и обработка пользовательских действий.

2. ViewController

  • ViewController отвечает за взаимодействие с пользователем и отображение данных, подписываясь на изменения из ViewModel.

3. Сетевой слой

  • Для работы с API Unsplash используется сетевой сервис, который отправляет запросы и обрабатывает полученные данные.

Как запустить проект

  1. Клонируйте репозиторий:

    git clone https://github.com/Sbat2000/ImageFeedTestApp.git
    
  2. Откройте проект в Xcode:

  3. cd ImageFeedTestApp
    open ImageFeedTestApp.xcodeproj

Contributors

Sbat2000

Issues