> Как реализовать функции setValue и getValue с поддержкой nil значений (iOS, Swift)

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

Компании: Revolut

Стек: iOS, Swift

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

Для реализации setValue и getValue с поддержкой nil в Swift (iOS) можно использовать опциональный тип (Optional) и словарь. Вот пример:

SWIFT
class Storage {
private var dictionary: [String: Any?] = [:]
func setValue(_ value: Any?, forKey key: String) {
dictionary[key] = value
}
func getValue(forKey key: String) -> Any? {
return dictionary[key] ?? nil
}
}

Объяснение:

  • dictionary хранит значения типа Any?, что позволяет хранить как конкретные значения, так и nil.
  • setValue принимает Any? - это явно поддерживает передачу nil (например, storage.setValue(nil, forKey: "key")).
  • getValue возвращает Any?, что корректно обрабатывает отсутствие ключа или явно установленный nil.

Пример использования:

SWIFT
let storage = Storage()
storage.setValue("Hello", forKey: "name")
storage.setValue(nil, forKey: "temp") // явный nil
print(storage.getValue(forKey: "name")) // Optional("Hello")
print(storage.getValue(forKey: "temp")) // nil (установленный)
print(storage.getValue(forKey: "missing")) // nil (отсутствующий ключ)

Важно: Если нужно различать "ключ отсутствует" и "ключ есть, но значение nil", используйте Optional<Any?>:

SWIFT
func getValue(forKey key: String) -> Any?? {
return dictionary[key] as Any??
}

Тогда getValue вернёт .some(nil) для явного nil и .none для отсутствующего ключа.

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

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