#swift #keychain #keychainitemwrapper
Вопрос:
struct UserData {
var userName: String? = nil
var password: String? = nil
var phone: String? = nil
var email: String? = nil
var image: UIImage? = nil
var categoryName: String? = nil
}
Мне нужно сохранить и извлечь эти данные в связку ключей.Как правильно сохранять и извлекать данные, а также при извлечении данных мне нужно отфильтровать эти данные по имени категории
Комментарии:
1. Что ты пробовал?
2. Было бы проще зашифровать и сохранить его в каталоге поддержки приложений. Или просто сохраните каждое свойство само по себе, учитывая, что это всегда будет только один пользователь. Я бы сохранил изображение в каталоге поддержки вашего приложения или в каталоге документов. брелок предназначен для хранения конфиденциальной информации. Не образы.
3. Как уже упоминалось. Это не служба написания кода. Пожалуйста, отредактируйте свой вопрос о том, что вы пробовали, и о проблемах, с которыми вы сталкиваетесь.
Ответ №1:
Вы можете привести данные пользователя в соответствие с кодируемыми, реализовав пользовательский кодер и декодер.
Все поля, кроме изображения, по умолчанию кодируются. Вы можете сохранить изображение в виде строки, экспортировав его данные в виде строки base64.
Затем вы можете преобразовать структуру в данные с помощью JSONEncoder. И используйте его представление в кодировке base64 для хранения в связке ключей.
Но у этого подхода есть серьезная проблема: связка ключей не подходит для хранения больших объемов данных. Он предназначен для хранения паролей и прочего.
Поэтому я бы создал какой-нибудь сервис, который бы управлял объектами пользовательских данных. Он будет хранить конфиденциальные данные, такие как пароль в связке ключей, и другие не столь чувствительные поля в виде файлов на диске.
Комментарии:
1. функция setupView(){ пусть учетные данные = Данные пользователя(Имя учетной записи: имя учетной записи.текст!, имя пользователя:Имя пользователя.текст!,пароль: пароль.текст!,Учетная запись: Учетная запись.текст!,текст описания: Текст описания., Изображение категории:Метка изображения.текст!, имя категории: Метка категории. текст!) сделайте { попробуйте Keychain.default.store(учетные данные) } поймать ошибку {печать(ошибка) } }