> Как реализовать функцию setValue для обновления значения по ключу (iOS, Swift)
Уровень: senior · Роль: mobile · Категория: Технические вопросы
Компании: Revolut
Стек: iOS, Swift
> Пример ответа
Для реализации setValue в iOS-приложении на Swift можно использовать несколько подходов в зависимости от контекста. Вот пример для работы с UserDefaults, словарями и CoreData:
1. UserDefaults (простые данные)
SWIFTfunc setValue(_ value: Any?, forKey key: String) {UserDefaults.standard.set(value, forKey: key)UserDefaults.standard.synchronize() // опционально, для немедленной записи}
2. Словарь (in-memory)
SWIFTvar storage: [String: Any] = [:]func setValue(_ value: Any?, forKey key: String) {storage[key] = value}
3. CoreData (постоянное хранение)
SWIFTfunc setValue(_ value: Any?, forKey key: String, entity: NSManagedObject) {entity.setValue(value, forKey: key)do {try context.save()} catch {print("Ошибка сохранения: \(error)")}}
4. Generic-реализация с проверкой типов
SWIFTfunc setValue<T>(_ value: T, forKey key: String) where T: Codable {let encoder = JSONEncoder()if let encoded = try? encoder.encode(value) {UserDefaults.standard.set(encoded, forKey: key)}}
Ключевые моменты:
- Для UserDefaults используйте
set(_:forKey:)с синхронизацией при необходимости - Для CoreData используйте KVC (Key-Value Coding) через
setValue(_:forKey:) - Для безопасности добавляйте проверки типов и обработку ошибок
- В Swift 5+ можно использовать
@AppStorageдля простых случаев
Выбор реализации зависит от архитектуры проекта (MVVM, VIPER и т.д.) и требований к персистентности данных.
> Похожие задачи по mobile
Куда помещать пароль в HTTP запросе, чтобы он был зашифрован и не был виден сниферу
Какой следующий этап после технического интервью
Как реализовать фильтрацию массива с сохранением уникальных элементов и порядка
Как разделить функции для чтения и записи значений
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью