ImageFeedTestApp — это приложение для поиска и просмотра изображений с использованием API Unsplash. Оно поддерживает динамическую загрузку контента, работу с кэшированием изображений, пагинацию и детальный просмотр информации о каждом изображении. Приложение построено на архитектуре MVVM с использованием асинхронной обработки данных и библиотеки Combine.
Для корректной работы приложения необходимо получить API ключ от сервиса Unsplash.
- Перейдите на Unsplash Developers и зарегистрируйтесь или войдите в свою учетную запись.
- Создайте новое приложение, указав необходимые данные (название приложения, описание и т.д.).
- После создания приложения вы получите Access Key и Secret Key. Вам потребуется Access Key для работы с API.
После получения ключа, откройте файл UnsplashSearchRequest и вставьте ваш API ключ в соответствующее место:
// TODO: Вставьте сюда ваш API ключ
let apiKey = "ВАШ_API_КЛЮЧ"- Поиск изображений через Unsplash API.
- Пагинация изображений: загружаются дополнительные страницы при прокрутке вниз.
- Кэширование изображений для уменьшения сетевой нагрузки и ускорения работы.
- Просмотр детальной информации о каждом изображении, возможность поделиться изображением или сохранить его в галерею.
- История поиска: сохраняет последние поисковые запросы для повторного использования.
- Интерфейс пользователя с использованием
UICollectionViewDiffableDataSourceиUICollectionViewCompositionalLayout.
- Использование MVVM позволяет разделить логику представления (UI) и бизнес-логику. Это упрощает поддержку и тестирование приложения.
- Библиотека Combine используется для обработки асинхронных событий, что позволяет обновлять пользовательский интерфейс при изменении данных.
- Для загрузки данных из сети используется
URLSession. В сервисе загрузки изображений эта технология обеспечивает безопасную и эффективную работу с сетевыми запросами.
- Для кэширования изображений используется
NSCache. Это позволяет повторно использовать загруженные изображения без необходимости загружать их из сети при каждом использовании.
- Использование
UICollectionViewDiffableDataSourceиUICollectionViewCompositionalLayoutобеспечивает гибкость интерфейса коллекций и поддержку анимаций при изменении данных.
- Пагинация реализована для динамической загрузки дополнительных изображений при прокрутке вниз.
- Использование
async/awaitупрощает работу с асинхронными операциями, делая код более читаемым и поддерживаемым.
- В ViewModel сосредоточена основная логика работы с данными, такие как сетевые запросы, управление состояниями (загрузка, ошибка, контент) и обработка пользовательских действий.
- ViewController отвечает за взаимодействие с пользователем и отображение данных, подписываясь на изменения из ViewModel.
- Для работы с API Unsplash используется сетевой сервис, который отправляет запросы и обрабатывает полученные данные.
-
Клонируйте репозиторий:
git clone https://github.com/Sbat2000/ImageFeedTestApp.git
-
Откройте проект в Xcode:
-
cd ImageFeedTestApp open ImageFeedTestApp.xcodeproj