Swift 3: Как читать из «Необязательно (Optional (stringValue))» без опционально?

-3

Я получил строковое значение с сервера, как это.

let filename = "\(eventList[index]["filename"])"

Но я получил значение с опцией (необязательно (stringValue)). Поэтому я изменил это так.

let filename = "\(eventList[index]["filename"]!)"

Затем я получил значение с опцией (stringValue). Я не могу больше этого делать. Как я могу прочитать имя файла без каких-либо дополнительных опций?

  • 1
    Используйте еще один " ! " После закрытия скобки. Однако лучше использовать синтаксис let .
  • 0
    Развернуть - иначе взять на себя - необязательный (ы) правильно.
Показать ещё 1 комментарий
Теги:

3 ответа

0
Лучший ответ

Используйте оператор nil-coalescing aka double question mark. Он используется для предоставления значения по умолчанию при развертывании необязательного типа.

let filename = eventList[index]["filename"] ?? ""

Ссылка: http://www.jeenalinfotech.com/blogs/ios/how-to-do-optional-variable-assignment-with-default-value-double-question-mark/

0

eventList[index] обращается к элементу массива в указанном индексе. Элемент, который вы указываете, по-видимому, является необязательным словарем, поэтому перед доступом к элементу словаря, который требуется развернуть: eventLists[index]! (при условии, что он существует и действует, конечно, иначе он будет сбой)

то вы можете получить доступ к значению словаря, которое также является необязательным:

eventLists[index]!["fileName"]!

если ваш список действителен, вы получите желаемый объект String.

Я рекомендую использовать проверки безопасности (if-let или другие варианты) для предотвращения сбоев

0

Использовать синтаксис if-let для разворачивания необязательно:

if let fileName = eventList[index]["filename"] {
    // use fileName
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню