Я получил строковое значение с сервера, как это.
let filename = "\(eventList[index]["filename"])"
Но я получил значение с опцией (необязательно (stringValue)). Поэтому я изменил это так.
let filename = "\(eventList[index]["filename"]!)"
Затем я получил значение с опцией (stringValue). Я не могу больше этого делать. Как я могу прочитать имя файла без каких-либо дополнительных опций?
Используйте оператор nil-coalescing aka double question mark. Он используется для предоставления значения по умолчанию при развертывании необязательного типа.
let filename = eventList[index]["filename"] ?? ""
eventList[index]
обращается к элементу массива в указанном индексе. Элемент, который вы указываете, по-видимому, является необязательным словарем, поэтому перед доступом к элементу словаря, который требуется развернуть: eventLists[index]!
(при условии, что он существует и действует, конечно, иначе он будет сбой)
то вы можете получить доступ к значению словаря, которое также является необязательным:
eventLists[index]!["fileName"]!
если ваш список действителен, вы получите желаемый объект String
.
Я рекомендую использовать проверки безопасности (if-let
или другие варианты) для предотвращения сбоев
Использовать синтаксис if-let
для разворачивания необязательно:
if let fileName = eventList[index]["filename"] {
// use fileName
}