如果我宣布String
这样:var date = String()
我想查看天气是nil
String
或不是,以便我尝试以下内容:
if date != nil{
println("It's not nil")
}
但我收到的错误如下:Can not invoke '!=' with an argument list of type '(@lvalue String, NilLiteralConvertible)'
if let date1 = date{
println("It's not nil")
}
但仍然收到如下错误:Bound value in a conditional binding must be of Optional type
所以我的问题是,如果我以这种方式声明1>},我怎么能检查String
是不是nil
?
答案 0 :(得分:25)
字符串不能为零。这就是Swift中这种打字的重点。
如果您希望它可能为零,请将其声明为可选:
var date : String?
如果你想检查一个字符串为空(不要这样做,那就是可以选择使用的那种东西)然后:
if date.isEmpty
但你真的应该使用选项。
答案 1 :(得分:5)
你可以试试这个......
var date : String!
...
if let dateExists = date {
// Use the existing value from dateExists inside here.
}
快乐编码!!!
答案 2 :(得分:2)
在您的示例中,字符串不能为零。要声明一个可以接受nil的字符串,你必须声明可选的字符串:
var date: String? = String()
在声明之后,您的测试将没有问题,您可以为该变量指定nil。
答案 3 :(得分:1)
有点晚了,但可能会帮助别人。您可以创建一个可选的字符串扩展名。我执行了以下操作,以将可选字符串设置为空(如果为nil):
extension Optional where Wrapped == String {
mutating func setToEmptyIfNil() {
guard self != nil else {
self = ""
return
}
}
}