Рассмотреть, с помощью каких инструментов и средств можно сохранять пользовательские данные на устройство. Научиться взаимодействовать с UserDefaults и Keychain.
- За основу домашнего задания необходимо взять предыдущую домашнюю работу.
- Любые вопросы по решению задач задавайте в чате учебной группы.
-
При старте приложения нужно показывать экран для ввода пароля. Экран должен содержать текстовое поле и кнопку.
У экрана должно быть два состояния:- пользователь не создавал пароль ранее;
- у пользователя есть сохранённый пароль;
Условия:
- в первом состоянии у кнопки должен быть title «Создать пароль», во втором — «Введите пароль»;
- пароль должен быть сохранён в Keychain. Можно использовать стороннюю библиотеку для работы с Keychain, например, KeychainAccess или [FDKeychain] (https://github.com/reidmain/FDKeychain).
-
Пароль должен состоять минимум из четырёх символов. Пользователь должен ввести пароль два раза. После первого ввода title кнопки меняется на «Повторите пароль».
-
если пароль не совпадает, нужно показать пользователю соответствующую ошибку и сбросить состояние экрана до начального;
-
если пароли совпадают, выполнять следующие проверки:
- если пользователь пароль ранее не задавал, то сохранять его в Keychain и открывать экран из п. 3;
- если у пользователя есть сохранённый пароль, нужно проверить введённый пароль с сохранённым. Если они совпадают, открывается экран из п. 3. Если нет, показывать соответствующую ошибку.
Чтобы определять состояние стартового экрана, необходимо при загрузке рутового контроллера делать запрос в Keychain через метод data-сервиса KeychainService, закрытого протоколом KeychainServiceProtocol.
Сервис должен иметь три метода:- метод получения данных,
- метод сохранения данных,
- метод их обновления.
-
После ввода пароля и его успешной проверки показывается таббар с двумя экранами: список файлов и экран настроек.
В настройках должны быть следующие опции:
- сортировка. Ячейка с текстовым полем и компонентом UISwitch. Показывать контент в алфавитном или обратном порядке. По умолчанию опция должна быть включена;
- показывать размер фотографии. Такая же ячейка с текстовым полем и UISwitch. По умолчанию опция должна быть включена;
- поменять пароль. При нажатии на ячейку модально открывается экран создания пароля.
Настройки должны сохраняться в UserDefaults и влиять на отображение элементов в списке файлов.
В личном кабинете отправлены:
- ссылка на pull-request с выполненной работой.
Зачёт — выполнены все задания, приложены соответствующие файлы проекта, в выполненных заданиях нет противоречий и нарушения логики.
На доработку — задание выполнено частично или не выполнено, в логике выполнения заданий есть противоречия, существенные недостатки.