我正在使用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以及它处理我缺少的可选内容的方式吗?
在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`. }