在Swift if语句中链接多个条件的正确语法是什么,如下所示:
if (string1!=nil && string2!=nil) {}
或:
if (string1.isEmpty && string2.isEmpty) {}
答案 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
您不需要上面显示的可选语法,也不会编译。