如何在Swift中检查字符串不是nil?

5
如果我像这样声明了一个字符串:var date = String(),而我想检查它是否是nil字符串,那么我可以尝试这样做:
if date != nil{
    println("It's not nil")
}

但是我遇到了一个错误:无法使用“!=”调用参数列表类型的参数(@lvalue String,NilLiteralConvertible)

之后我尝试了这个:

if let date1 = date {
    println("It's not nil")
}

但是,仍然会收到以下错误信息:

条件绑定中的绑定值必须是可选类型

所以我的问题是,如果我这样声明String,如何检查它不是nil

4个回答

27
字符串不能为nil,这是Swift类型的重点。如果您希望它可以为空,将其声明为可选项:
var date : String? 

如果你想检查一个字符串是否为空(不建议这样做,因为 optionals 就是为了解决这种问题而存在的),那么可以使用以下代码:

if date.isEmpty

但是你真的应该使用可选项。


它并没有回答如何检查可选变量是否为nil的问题。 - Tomas Liubinas
据我所知,编译器不允许您编写对“String”进行空值检查的代码,您只能在“String?”上执行此操作。 - benc

6
您可以尝试这个...
var date : String!
...
if let dateExists = date {
      // Use the existing value from dateExists inside here.
}

愉快的编码!!!


2
在你的例子中,字符串不能为空。要声明一个可以接受 nil 的字符串,你必须声明可选字符串:
var date: String? = String()

在声明变量之后,您的测试将运行良好,并且可以将null赋值给该变量。


1

虽然有点晚,但可能对其他人有所帮助。您可以创建一个可选的字符串扩展。我按照以下方式设置了可选字符串为空,如果它为nil:

extension Optional where Wrapped == String {

    mutating func setToEmptyIfNil() {
        guard self != nil else {
            self = ""
            return
        }
    }

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接