У меня есть функция, в которой строковое значение определяется на основе значения в словаре.Если значение в словаре не найдено, я устанавливаю его в статическую строку.Строка постоянна (let
):
let dict = [ 1: "a",
2: "b" ]
func x() {
let index = someFunctionReturnsInt()
let str = (nil != dict[index]) ? dict[index] : "N/A"
Таким образом, строка не может быть nil
.Однако, когда я пытаюсь использовать str
, Swift все равно считает это необязательным.Например:
// still inside the same function
os_log("Str is %@", str)
вернет ошибку компилятора:
Значение необязательного типа 'String?'должен быть развернут в значение типа 'String'
Дело в том, что я использую эту функцию довольно много раз, и добавление str ?? "N/A"
в каждом случае не имеет смысла.Принудительное развертывание с str!
кажется излишним: эта строка не критична для приложения, поэтому я не думаю, что прерывание выполнения, если оно отсутствует, имеет какой-то смысл.
То есть принудительное развертывание - единственное решение, или есть лучший способ определить строку как необязательную и «никогда не будет ноль»?