一尘不染

Swift:测试nil的可选项

swift

我正在使用Xcode 6 Beta4。我有这种奇怪的情况,我无法弄清楚如何适当地测试可选项。

如果我有可选的xyz,则是正确的测试方法:

if (xyz) // Do something

要么

if (xyz != nil) // Do something

这些文档说是第一种方法,但是我发现有时第二种方法是必需的,并且不会生成编译器错误,但是有时,第二种方法会生成编译器错误。

我的具体示例是使用桥接到swift的GData XML解析器:

let xml = GDataXMLDocument(
    XMLString: responseBody,
    options: 0,
    error: &xmlError);

if (xmlError != nil)

在这里,如果我刚做过:

if xmlError

它将始终返回true。但是,如果我这样做:

if (xmlError != nil)

然后它就起作用了(就像在Objective-C中一样)。

GData XML以及它处理我缺少的可选内容的方式吗?


阅读 206

收藏
2020-07-07

共1个答案

一尘不染

在Xcode Beta 5中,它们不再允许您执行以下操作:

var xyz : NSString?

if xyz {
  // Do something using `xyz`.
}

这会产生一个错误:

不符合协议“ BooleanType.Protocol”

您必须使用以下形式之一:

if xyz != nil {
   // Do something using `xyz`.
}

if let xy = xyz {
   // Do something using `xy`.
}
2020-07-07