Быстрая проверка на ноль в необязательном массиве - PullRequest
0 голосов
/ 15 февраля 2020

У меня есть дополнительный массив, и мне нужно проверить член на ноль. К сожалению, это не работает так, как я ожидал. Кажется, мне нужно развернуть его, однако во время выполнения я не знаю, является ли рассматриваемое значение String, Int, другим массивом и т. Д. c. поэтому приведение не помогает (я думаю)

var nilString: String? = nil

let arr = [1, nilString] as [Any]?

print(nilString)
print(arr?[1])

if (arr?[1] == nil) {
    print("is nil") // doesn't work
}

if case Optional<Any>.none = arr?[1] {
    print("nil")     //would expect this one 
} else {             //but
    print("not nil") //<-- gets printed
}

Альтернативные идеи по структуре также приветствуются.

1 Ответ

1 голос
/ 15 февраля 2020

Ваша проблема в том, что вы объявили тип Array как необязательный вместо объявления его элементов. Вам просто нужно изменить объявление массива на [Any?]. Обратите внимание, что использование Any бесполезно в большинстве ситуаций. Я работаю в Swift более 5 лет, и мне никогда не приходилось объявлять тип элемента как Any.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...