Инициализатор условного связывания должен иметь необязательный тип, даже если это необязательный тип - PullRequest
0 голосов
/ 11 февраля 2019

Я получил ошибку, которую я не понимаю, так как мне показалось, что я понимаю, разворачивание условной переменной / let.Но когда я пытаюсь принудительно развернуть его в случае, если я получаю прилагаемую ошибку.

Ошибка:

Initializer for conditional binding must have Optional type, not 'String'  

Код:

let imNotSet: String?

print(type(of: imNotSet)) // Optional<String>

if let unwrappedVar = imNotSet! { // error on this line
    print(unwrappedVar)
}

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

var для использования, если разрешено, это должно быть необязательно , а

imNotSet!

- нет, поэтому замените

if let unwrappedVar = imNotSet! {

с

guard let unwrappedVar = imNotSet else { return }
0 голосов
/ 11 февраля 2019
if let unwrappedVar = imNotSet! { // error on this line
    print(unwrappedVar)
}

imNotSet! принудительно развернутый imNotSet.Так что это больше не необязательный, а скорее строка.

Чтобы сделать его необязательным, удалите принудительное развертывание.

if let unwrappedVar = imNotSet { // error fixed
        print(unwrappedVar)
    }

if let позволяет безопасно развернуть дополнительное, в отличие от принудительного развертывания, которое вы делали ранее.

Что касается Constant 'imNotSet' used before being initialized error, либо предоставьте ему значение, например let imNotSet: String? = "Sample", если оно действительно является константой, прежде чем использовать его.Или сделайте его переменным, если вам нужно сбросить его позже, например var imNotSet: String? = nil

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