Swift: укажите значение по умолчанию внутри строкового литерала - PullRequest
2 голосов
/ 10 апреля 2019

Я собираюсь предоставить значение по умолчанию для необязательного String, который помещается внутри литерала String в качестве параметра (если я использовал правильные ключевые слова!). Я хочу знать, как я могу установить значение по умолчанию для него, используя "??" оператор?

Я думаю, что перед двойными кавычками я должен использовать escape-символы, но я не знаю, какой синтаксис правильный. Вот мой синтаксис, который приводит к ошибке:

print ("Error \(response.result.error ?? "default value") ")
//------------------------ what should be ^here^^^^^^^^

Ответы [ 2 ]

3 голосов
/ 10 апреля 2019

Просто оберните его в скобки:

print("Error \((response.result.error ?? "default value"))")

Более чистый способ - использовать @Alladinian answer и поместить строку в переменную перед ее печатью

3 голосов
/ 10 апреля 2019

Вы должны буквально заменить default value своим сообщением.

Нет необходимости избегать двойных кавычек, поскольку вы внутри \(<expression>) (Подробнее о строковой интерполяции Swift здесь )

Если вам нужен более чистый подход, сделайте это вдва шага:

let msg = response.result.error ?? "whatever"
print("Error: \(msg)") 

Наконец, если вы хотите печатать только не ноль ошибок (избегая журналов для ответов, которые не вызывали ошибок), вы можете сделать:

if let error = response.result.error { print("Error: \(error)") }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...