You signed in with another tab or window.Reload to refresh your session.You signed out in another tab or window.Reload to refresh your session.You switched accounts on another tab or window.Reload to refresh your session.Dismiss alert
Таблица (UITableView) с NFT пользователя. Каждая ячейка содержит:
Иконку NFT;
Название;
Автора;
Цену (в ETH).
Кнопка сортировки. При отсутствии NFT — сообщение.
Экран «Избранные NFT»
Коллекция (UICollectionView) с NFT из избранного. Каждая ячейка содержит:
Иконку;
Кнопку удаления из избранного (иконка сердца);
Название;
Рейтинг;
Цену (в ETH).
При отсутствии избранных NFT — сообщение.
Статистика
Экран рейтинга
Таблица (UITableView) с пользователями. Для каждого указано:
Место в рейтинге;
Аватар;
Имя;
Количество NFT.
Кнопка сортировки. Нажатие на ячейку открывает профиль пользователя.
Экран информации о пользователе
Содержит:
Фото и имя;
Описание;
Кнопку перехода на сайт;
Возможность просмотра коллекций пользователя.
Экран коллекции пользователя
Коллекция (UICollectionView) с NFT. Каждая ячейка содержит:
Иконку;
Кнопку избранного;
Название;
Рейтинг;
Цену (в ETH);
Кнопку корзины.
Сортировка данных
Доступна на экранах: «Каталог», «Корзина», «Мои NFT», «Статистика».Настройки сохраняются локально черезUserDefaults и восстанавливаются после перезапуска.
Значения по умолчанию:
Каталог — по количеству NFT;
Корзина — по названию;
Мои NFT — по рейтингу;
Статистика — по рейтингу.
Нефункциональные требования
1. Проект
Минимальная версия iOS: 17.0 и выше;
Работоспособность: проект компилируется без ошибок и запускается в симуляторе.
2. Архитектура
Фреймворк для верстки: UIKit;
Архитектурный паттерн: Выбрать между MVC/MVP/MVVM
2.1 Общее
Компоненты архитектуры и ответственность между ними чётко разделены: то, что должно бытьPresenter, не названоView.
Данные обрабатываются черезstruct илиclass с соблюдением принципов инкапсуляции.
Классы названы правильно. Компоненты архитектуры связаны корректно.
2.2 Сеть
Реализована обработка задач с использованиемGCD и подходящимQoS
Реализовано правильное использование многопоточности, чтобы избежатьrace conditions иdeadlocks черезDispatchQueue
ИспользуетсяURLSession для сетевых запросов.
3. Многопоточность
Запрещено: Swift Concurrency (async/await,actor);
Обязательно: обновление UI только из главного потокаMain Thread.