var annoying: [String: Any?]
Чтобы получить значение высоты, лучшее, что я мог придумать, это следующее:
let found: String = (annoying["height"] as? String? ?? "?") ?? "?"
Это кажется очень плохим, есть ли лучший способ?
Действительно, в идеале мне бы хотелось
пусть найдено: Строка? = :О
Таким образом, это ноль, если ключ не существует - или - значение равно нулю - или - значение не является строкой - но я буквально не знаю, как это сделать, и каждая попытка терпела неудачу:/
(Я просто использую маркер «?» в первом решении.)
Вы можете просто сделать
let found = annoying["height"] as? String
ноль, если ключ не существует
let annoying: [String: Any?] = [:]
let found = annoying["height"] as? String
// nil
-или- значение равно нулю
let annoying: [String: Any?] = ["height":nil]
let found = annoying["height"] as? String
// nil
-или- значение не является строкой
let annoying: [String: Any?] = ["height":42]
let found = annoying["height"] as? String
// nil
И это работает для строковых ключей:
let annoying: [String: Any?] = ["height":"10m"]
let found = annoying["height"] as? String
// "10m"
Что-то вроде
let found: String? = annoying["height", default: ""] as? String
?