检查多个字符串是空的还是带有“if”条件的nil

时间:2015-06-06 11:32:01

标签: swift

在Swift if语句中链接多个条件的正确语法是什么,如下所示:

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

或:

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

2 个答案:

答案 0 :(得分:4)

无需在这两个条件下使用()

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

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

另外,检查String是否为nil与检查字符串的空白度不同。

为了检查你的Strings是否为零,他们首先必须是Optionals。

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")
}

在这种情况下,两个字符串不是nil但仍然可以为空,所以你也可以检查它:

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

答案 1 :(得分:0)

检查nil并检查字符串内容在Swift中是不同的。

NSString类有一个长度方法,它将返回字符串的长度。

Swift中的粗略等价物是count()函数。 (对于带有重音符号的字母,它的行为会有所不同,但是现在让我们忽略它。

如果你希望一个表达式返回0,如果一个String optional是nil ,如果它包含一个空字符串,请使用如下代码:

var aString: String?

println(count(aString ?? ""))

aString = "woof"

println(count(aString ?? ""))

如果可选项为nil,或者如果它包含空字符串,则代码count(stringOptional ?? "")将返回0。

??双引号称为“nil coalescing operator”。如果第一部分为零,则用第二部分替换表达式的第一部分。它相当于:

string1 == nil ? "" : string1

您可以将isEmpty与相同的构造一起使用:

(string1 ?? "").isEmpty

所以你的if语句会更好地写成

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

请注意,仅当string1和string2声明为optionals时才需要上述内容:

var string1: String?

如果它们被声明为必需的String对象:

var string1: String

您不需要上面显示的可选语法,也不会编译。