Я собираюсь предоставить значение по умолчанию для необязательной строки, которая помещается внутри строкового литерала в качестве параметра (если я использовал правильные ключевые слова!). Я хочу знать, как я могу установить для него значение по умолчанию, используя "??" оператор?
Я думаю, что мне следует использовать escape-символы перед двойной кавычкой, но я не знаю, каков правильный синтаксис. Вот мой синтаксис, который приводит к ошибке:
print ("Error \(response.result.error ?? "default value") ")
//------------------------ what should be ^here^^^^^^^^
@Sulthan Хороший вопрос. Я так и предполагал для своего ответа (не обязательно строка, но определенно необязательно)
Вы должны заменить буквальноdefault value
своим сообщением.
Не нужно экранировать двойные кавычки, так как вы находитесь внутри \(<expression>)
(Подробнее об интерполяции строк Swift здесь)
Если вам нужен более чистый подход, сделайте это в два этапа:
let msg = response.result.error ?? "whatever"
print("Error: \(msg)")
Наконец, если вы хотите печатать только ненулевые ошибки (избегая журналов для ответов, которые не привели к ошибкам), вы можете сделать:
if let error = response.result.error { print("Error: \(error)") }
Просто заключите его в скобки:
print("Error \((response.result.error ?? "default value"))")
Более чистый способ - использовать ответ @Alladinian и поместить строку в переменную перед ее печатью.
Это должно быть правильно, если
result.error
действительноString?
.