2015-06-06 3 views
3

Что такое правильный синтаксис для построения цепочки нескольких условий в Swift, если оператор, например, так:Проверка, если несколько строк пусты или ноль с «если» условие

if (string1!=nil && string2!=nil) {} 

или:

if (string1.isEmpty && string2.isEmpty) {} 
+0

сначала подходит для моего мнения –

+0

Обязательно оставьте место вокруг условных обозначений: 'string1! = Nil' not' string! = Nil'. – vacawama

ответ

4

Там в нет необходимости использовать () вокруг двух условий:

let name1 = "Jim" 
let name2 = "Jules" 

if name1.isEmpty && name2.isEmpty { 
    println("Both strings where empty") 
} 

Кроме того, CHEC king, если String nil - это не то же самое, что проверка пустоты строки.

Чтобы проверить, нет ли ваших строк, они должны быть в первую очередь.

var name1: String? = "Jim" 
var name2: String? = "Jules" 

if name1 != nil && name2 != nil { 
    println("Strings are not nil") 
} 

И с безопасным разворачивая:

if let firstName = name1, secondName = name2 { 
    println("\(firstName) and \(secondName) are not nil") 
} 

В этом случае обе строки, где не нулевыми, но все еще может быть пустой, так что вы можете проверить, что тоже:

if let firstName = name1, secondName = name2 where !firstName.isEmpty && !secondName.isEmpty { 
    println("\(firstName) and \(secondName) are not nil and not empty either") 
} 
0

Поверка для nil и проверка содержимого строки различаются в Swift.

Класс NSString имеет метод длины, который возвращает длину строки.

Грубый эквивалент в Swift - это функция count(). (Он ведет себя по-разному для таких вещей, как буквы с диакритическими знаками, но давайте игнорировать, что на данный момент.

Если вы хотите выражение, которое будет возвращать 0, если строка необязательно равна нулю или, если она содержит пустую строку, используйте код как это:.

var aString: String? 

println(count(aString ?? "")) 

aString = "woof" 

println(count(aString ?? "")) 

код count(stringOptional ?? "") возвращает 0, если опция равна нулю, или, если она содержит пустую строку

?? двойные кавычки называется «ноль сливающихся оператор» он заменяет первая часть выражения со второй если первая часть равна нулю. Это эквивалентно:

string1 == nil ? "" : string1 

Вы можете использовать IsEmpty с той же конструкции:

(string1 ?? "").isEmpty 

И так ваш, если заявление будет лучше записать в виде

if (string1 ?? "").isEmpty && (string2 ?? "").isEmpty 
{ 
    println("Both strings are empty") 
} 

Обратите внимание, что выше только необходимо, если string1 и string2 объявлены как дополнительные:

var string1: String? 

, если они объявлены как необходимые объекты Струнные:

var string1: String 

вам не нужен дополнительный синтаксис, показанный выше, и он не будет компилировать.

Смежные вопросы