我正在使用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`.
}
问题内容: 我有一本有值的字典,我叫它来填充一个字段 如代码中所示,userdata [“ email”]存在并有一个值,由println打印,无论如何,在下一行中,我引发了一个nil可选异常(甚至不使用默认的“”值) 我看不到我在做什么错 问题答案: 它是文本字段的出口,但在prepareForSegue函数中似乎没有解包 那句话暴露出你的误解。事情按顺序发生,我在这里讨论:https : //
问题内容: Swift中的函数是否可以具有参数?我正在尝试这样做: …但是当我尝试调用它并通过时,它给了我一个奇怪的编译错误: 我不明白为什么我的类已经被声明为可选的,所以必须遵循某些特殊的协议。 问题答案: 它不会编译,因为该函数需要引用,但是您通过了。这个问题与可选无关。 通过用声明参数意味着您将在函数体内为其分配一些值。如何分配价值? 你需要这样称呼它 如果您了解C ,则这是代码的C 版本,
问题内容: 我正在使用2014年WWDC教程408:使用XCode Beta 3(30分钟)的Swift Playgrounds。自Beta 2起,Swift语法已更改。 为什么我不能以这种方式修改可变整数数组? 问题答案: 因为子例程参数是隐式定义的,因此是不可变的。尝试将声明更改为: 以及对以下内容的调用: 您也可以使用,但这仅允许在子例程中修改数组。Beta 3的最大变化是使数组真正按值传递
可选类型“Bool”不能用作布尔值;改为测试“!=nil” 我在第一个if中得到了一个错误,通过替换if条件(之后的
我是个新手,这可能是个很简单的错误,但我需要一个很好的解释。我有一个Xcode错误 可选类型'Bool'不能用作布尔值;改为测试'!=nil' 对于第二行<代码> segue 我正在观看YouTube视频,以遵循待办事项列表的步骤。
请原谅我的无知,我恐怕错过了一些基本的选项理解。我的印象是(隐式展开的可选指示符)保证该类型的变量不为零。然而,这个非常简单的Apple API很少会返回我。 这是一个意外的错误还是Optionals规范的一部分?因为如果这是规范的一部分,我不明白为什么会有选项,而不是变量可以存在或。