Новый формат домашек, который будет включать себя работу 3-х занятий. Почему так? Лично каждому могу объяснить если есть вопросы по этому поводу. Поверхностный просмотр домашки то есть review на качество кода и чистоту буду стараться проводить один раз в неделю и оставлять комментарии. Полный просмотр домашки будет по итогу трех занятий.
Будет смотрется :
- соответствие выполненных заданий, за каждый не выполненный пункт задания -0,1...1 балла.
- верстка на соответствие на маленьком и большом экране, не соответствие -0,1...1 балла.
- стиль и качество кода (названия переменных, отступы, переносы, названия классов) -0,1...1 балла.
- фатальные ошибки (краш приложения, невозможно попасть на нужный экран, runtimeError) -0,1...1 балла.
- ошибки/варнинги в консоли -0,1...1 балла;
Тема | Описание |
---|---|
Работа с кастомными ячейками. AutoLayout | Отображение данных в таблице с кастомными ячейками, разметка UI компонентов с помощью AutoLayout. |
MVC. Блоки кода. | Использование принципов MVC при проектировании приложения, работа и использование блоков (closures) в проекте. |
Динамическая высота ячеек. | Передача данных между контроллерами. Работа с ячейками, которые будут динамически менять свою высоту от контента, передача данных между разными контроллерами. |
- Все на Autolayout. Верстка должна красиво выглядить как на iPodTouch так и на 12 Pro. Если верстка будет отличаться будут вычитаться 1 балл.
- Делаем красиво паппочки как на паре показывал
- Используем StackView для верстки
Переделать/сделать копию соц сети facebook/instagram/vk (профиль, лента) со следующими изменениями:
- Добавить экран входа через логин пароль. (Валидация и прочее 5 занятие) 1.1 Добавить в приложении возможность разлогиниться и войти заново 1.2 (Не обязательное задание) Добавить регистрацию.
- Динамические записи на экране своей стены. (нужно, чтобы были три вариации: текст+картинка, текст, картинка. С динамическим размером)
- Используем одну ячейку для разных типов новостей.
- Добавить экран профиля (отдельно можно сразу засунуть в TabBarController)
-
Делаем рефакторинг проекта по стилю с MARK(lifecycle, init, private functions, public functions, Delegates, Datasources)
// MARK: -
, применяем архитектуру MVC(Model, View(в нашем случае это Storyboard), Controller) и рефакторим наши модули, добавляем логическое разделение и ставим комментарии (Outlets, properties, private properties)// Outlet properties и т.д.
. https://developer.apple.com/library/archive/documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html https://coderoad.ru/35963128/Swift-%D0%BF%D0%BE%D0%BD%D0%B8%D0%BC%D0%B0%D0%BD%D0%B8%D0%B5-MARK -
Во viewController, вы просто добавяляли некий генератор для моделей (профиль, лента). Теперь задача стоит в том, чтобы создать некий сервис для получения этих данных из вне. В нашем случае - это будет как на паре. Получить данные нужно будет через @escaping closure, в функции получения сделайте задержку перед получением
sleep(3)
, конфигурирование данных и обновление таблиц производим после получения данных. https://docs.swift.org/swift-book/LanguageGuide/Closures.html -
Соблюдаем style guide https://github.com/raywenderlich/swift-style-guide
- При ошибке валидации отображать UIAlertController с текстом ошибки.
- Для каждой пары логин пароль (читай юзера) своя инфа как на стене, так и о профиле (минимум 3 юзера)
- Логин и пароль валидируется: логин всегда email, все что не email пропускать не должно; пароль не меньше 6 символов, только латиница, содержит хотя бы 1 цифру.
- Редактирование статуса пользователя через делегат на новом экране
- Использовать TabBarController для экрана профиля и ленты.
- style guide: https://github.com/raywenderlich/swift-style-guide
- все о замыкании: https://docs.swift.org/swift-book/LanguageGuide/Closures.html
- все о MVC от apple: https://developer.apple.com/library/archive/documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html
- все о MARK: https://coderoad.ru/35963128/Swift-%D0%BF%D0%BE%D0%BD%D0%B8%D0%BC%D0%B0%D0%BD%D0%B8%D0%B5-MARK
Итого:
У вас должно быть приложение которое начинается с экрана авторизации логина и пароля, при успешном вводе данных происходит переход на экран новостей, где каждую новость можно выбрать и посмотреть детально. Дополнительно у вас есть экран профиля, где вы можете поменять какую-то информацию о себе и посмотреть ее подробнее.