У меня есть случай, когда я хочу проверить, есть ли у меня опция, равная строке. Сначала я должен развернуть его, чтобы проверить, существует ли он, тогда я хочу проверить, соответствует ли он другой строке. Однако это дает мне проблему, когда мне приходится дважды писать один и тот же код. Я приведу вам пример:Проверка необязательного isEqualToString
var person : Person = Person()
if let name = person.name {
if name.isEqualToString("John") {
println("Hello, John!")
}
else {
println("Wait a minute, you're not John!")
}
else {
println("Wait a minute, you're not John!")
}
Как вы можете видеть, мне нужно написать инструкцию else дважды. Однажды, если имя существует, и это не «Джон», а другое время, когда имя не существует.
Вопрос в том, как это можно сделать надлежащим образом.
Спасибо за помощь!
PS Есть ли когда-нибудь причина использовать' .isEqualToString' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' должен работать либо с 'NSString', либо' String' (или строковый литерал) с обеих сторон. –
Спасибо за ваш ответ. Это работает, но только если установлено имя person.name. имя не было установлено, я получаю предупреждение «неожиданно найдено нуль при распаковке необязательного значения». У меня есть случаи, когда имя не было установлено, поэтому, чтобы подвести итог, я хочу проверить, является ли это «Джон», а не ноль. – fisher
Даже если 'name' не задано, вы должны использовать' == '.Проверка его равна Джону, должно быть достаточно, чтобы подтвердить, что это не ноль. Например, запустите это на игровой площадке: 'let s: NSString? = nil; s == "John" // возвращает false, no error'. Вы уверены, что нет какой-либо другой части заявления, которое может быть снято с усилием, может ли быть «как» там? –