Объявив свой словарь как [Int:String?]
, вы говорите, что ключ - это Int
, а значения не являются обязательными String
s. Теперь ключ может отсутствовать в словаре, поэтому foo[1]
необязательно возвращает необязательный параметр, и в итоге вы получаете с необязательным необязательным - String??
Теперь, хотя иногда используются необязательные параметры, я не думайте, что в данном случае это именно то, что вам нужно.
Вы можете просто создать словарь [Int:String]
, а затем не вставлять элемент, если значение равно nil
.
let foo: [Int: String] = [:]
dummy.title = foo[1]
Если вам действительно нужно обработать случай, когда «есть значение для этого ключа, и оно nil
», тогда вам может помочь оператор объединения nil:
dummy.title = foo[1] ?? nil
или даже
dummy.title = foo[1] ?? ""