> Как реализовать функции setValue и getValue с поддержкой nil значений (iOS, Swift)
Уровень: senior · Роль: mobile · Категория: Технические вопросы
Компании: Revolut
Стек: iOS, Swift
> Пример ответа
Для реализации setValue и getValue с поддержкой nil в Swift (iOS) можно использовать опциональный тип (Optional) и словарь. Вот пример:
SWIFTclass 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.
Пример использования:
SWIFTlet storage = Storage()storage.setValue("Hello", forKey: "name")storage.setValue(nil, forKey: "temp") // явный nilprint(storage.getValue(forKey: "name")) // Optional("Hello")print(storage.getValue(forKey: "temp")) // nil (установленный)print(storage.getValue(forKey: "missing")) // nil (отсутствующий ключ)
Важно: Если нужно различать "ключ отсутствует" и "ключ есть, но значение nil", используйте Optional<Any?>:
SWIFTfunc getValue(forKey key: String) -> Any?? {return dictionary[key] as Any??}
Тогда getValue вернёт .some(nil) для явного nil и .none для отсутствующего ключа.
> Похожие задачи по mobile
Как реализовать функцию умножения числа на десять с обработкой символов
Как реализовать unit test для функции записи данных в файл
Что такое side table
Как используется рефлексия при сериализации
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью