我很难理解选项和使用Swift语言强制展开。这本书和章节我读了好几遍了,但我不明白。
以下两者之间是否有区别:
totalAmountTextField?.text.toInt()
totalAmountTextField!.text.toInt()此外,在声明IBOutlets时,为什么我总是将它作为一个可选字段,如下所示:
@IBOutlet var nameTextField :UITextField?如果我不用"?“最后,它会产生错误。
发布于 2014-08-18 03:53:14
totalAmountTextField?.text.toInt()等价于
func foo() -> Int? { // give you optional Int
if let field = totalAmountTextField {
return field.text.toInt()
} else {
return nil // return nil if totalAmountTextField is nil
}
}
foo()如果totalAmountTextField可以是nil,则应该使用它
totalAmountTextField!.text.toInt()等价于
func foo() -> Int { // give you Int
if let field = totalAmountTextField {
return field.text.toInt()
} else {
crash() // crash if totalAmountTextField is nil
}
}
foo()只有当您知道totalAmountTextField不能是nil时,才应该使用它
发布于 2014-08-18 03:56:25
// It represents that totalAmountTextField may be nil and then stop the chain.
totalAmountTextField?.text.toInt()
// It assume that totalAmountTextField must have value, if not then caused a crash.
totalAmountTextField!.text.toInt()您可以查看有关Optional Chaining的Swift文档。Language/OptionalChaining.html
https://stackoverflow.com/questions/25356034
复制相似问题