首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快速选择和强制展开

快速选择和强制展开
EN

Stack Overflow用户
提问于 2014-08-18 03:42:10
回答 2查看 270关注 0票数 0

我很难理解选项和使用Swift语言强制展开。这本书和章节我读了好几遍了,但我不明白。

以下两者之间是否有区别:

代码语言:javascript
复制
totalAmountTextField?.text.toInt()

totalAmountTextField!.text.toInt()

此外,在声明IBOutlets时,为什么我总是将它作为一个可选字段,如下所示:

代码语言:javascript
复制
@IBOutlet var nameTextField :UITextField?

如果我不用"?“最后,它会产生错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-18 03:53:14

totalAmountTextField?.text.toInt()等价于

代码语言:javascript
复制
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()等价于

代码语言:javascript
复制
func foo() -> Int { // give you Int
    if let field = totalAmountTextField {
        return field.text.toInt()
    } else {
        crash() // crash if totalAmountTextField is nil
    }
}

foo()

只有当您知道totalAmountTextField不能是nil时,才应该使用它

票数 3
EN

Stack Overflow用户

发布于 2014-08-18 03:56:25

代码语言:javascript
复制
// 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25356034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档