> Как реализовать функцию setValue для обновления значения по ключу (iOS, Swift)

Уровень: senior · Роль: mobile · Категория: Технические вопросы

Компании: Revolut

Стек: iOS, Swift

> Пример ответа

Для реализации setValue в iOS-приложении на Swift можно использовать несколько подходов в зависимости от контекста. Вот пример для работы с UserDefaults, словарями и CoreData:

1. UserDefaults (простые данные)

SWIFT
func setValue(_ value: Any?, forKey key: String) {
UserDefaults.standard.set(value, forKey: key)
UserDefaults.standard.synchronize() // опционально, для немедленной записи
}

2. Словарь (in-memory)

SWIFT
var storage: [String: Any] = [:]
func setValue(_ value: Any?, forKey key: String) {
storage[key] = value
}

3. CoreData (постоянное хранение)

SWIFT
func setValue(_ value: Any?, forKey key: String, entity: NSManagedObject) {
entity.setValue(value, forKey: key)
do {
try context.save()
} catch {
print("Ошибка сохранения: \(error)")
}
}

4. Generic-реализация с проверкой типов

SWIFT
func 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 и т.д.) и требований к персистентности данных.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью