Skip to content

Latest commit

 

History

History
61 lines (39 loc) · 5.16 KB

README.md

File metadata and controls

61 lines (39 loc) · 5.16 KB

Домашнее задание к занятию 2.2. «UserDefaults, Keychain, On-demand Resources»

Цель задания

Рассмотреть, с помощью каких инструментов и средств можно сохранять пользовательские данные на устройство. Научиться взаимодействовать с UserDefaults и Keychain.


Инструкция к выполнению домашнего задания

  • За основу домашнего задания необходимо взять предыдущую домашнюю работу.
  • Любые вопросы по решению задач задавайте в чате учебной группы.

Задание

  1. При старте приложения нужно показывать экран для ввода пароля. Экран должен содержать текстовое поле и кнопку.
    У экрана должно быть два состояния:

    • пользователь не создавал пароль ранее;
    • у пользователя есть сохранённый пароль;

    Условия:

    • в первом состоянии у кнопки должен быть title «Создать пароль», во втором — «Введите пароль»;
    • пароль должен быть сохранён в Keychain. Можно использовать стороннюю библиотеку для работы с Keychain, например, KeychainAccess или [FDKeychain] (https://github.com/reidmain/FDKeychain).
  2. Пароль должен состоять минимум из четырёх символов. Пользователь должен ввести пароль два раза. После первого ввода title кнопки меняется на «Повторите пароль».

  • если пароль не совпадает, нужно показать пользователю соответствующую ошибку и сбросить состояние экрана до начального;

  • если пароли совпадают, выполнять следующие проверки:

    • если пользователь пароль ранее не задавал, то сохранять его в Keychain и открывать экран из п. 3;
    • если у пользователя есть сохранённый пароль, нужно проверить введённый пароль с сохранённым. Если они совпадают, открывается экран из п. 3. Если нет, показывать соответствующую ошибку.

    Чтобы определять состояние стартового экрана, необходимо при загрузке рутового контроллера делать запрос в Keychain через метод data-сервиса KeychainService, закрытого протоколом KeychainServiceProtocol.
    Сервис должен иметь три метода:

    • метод получения данных,
    • метод сохранения данных,
    • метод их обновления.
  1. После ввода пароля и его успешной проверки показывается таббар с двумя экранами: список файлов и экран настроек.

    В настройках должны быть следующие опции:

    • сортировка. Ячейка с текстовым полем и компонентом UISwitch. Показывать контент в алфавитном или обратном порядке. По умолчанию опция должна быть включена;
    • показывать размер фотографии. Такая же ячейка с текстовым полем и UISwitch. По умолчанию опция должна быть включена;
    • поменять пароль. При нажатии на ячейку модально открывается экран создания пароля.

    Настройки должны сохраняться в UserDefaults и влиять на отображение элементов в списке файлов.


Правила приёма домашнего задания

В личном кабинете отправлены:

  • ссылка на pull-request с выполненной работой.

Критерии оценки

Зачёт — выполнены все задания, приложены соответствующие файлы проекта, в выполненных заданиях нет противоречий и нарушения логики.

На доработку — задание выполнено частично или не выполнено, в логике выполнения заданий есть противоречия, существенные недостатки.