Можем ли мы сохранить массив объектов модели в связке ключей?

#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(учетные данные) } поймать ошибку {печать(ошибка) } }