为什么Swift 1.2需要强制解包?

时间:2015-04-16 03:24:59

标签: swift optional

在Swift 1.2中,以下

let cell = tableview.dequeueReusableCellWithIdentififer("mycell"), forIndexPath: indexPath) as UITableViewCell

现在必须使用!

let cell = tableview.dequeueReusableCellWithIdentififer("mycell"), forIndexPath: indexPath) as! UITableViewCell

在第一个例子中, cell 可以是nil吗?对于常数为零而言似乎很奇怪。

在第二个例子中,Swift确保在编译时有一个值?

2 个答案:

答案 0 :(得分:5)

它不是“强制展开”。它与选项或展开无关。它是强制转换运算符as的新版本。在Swift 1.2中,我们使用as!运算符进行可靠的向下转换;感叹号旨在提醒我们,如果这件事情不是我们所声称的课程,我们就会崩溃。这总是为真;使用as!代替as只是帮助您了解事实的一种方式。

答案 1 :(得分:0)

因为向下倾斜必须成功..使用强制方式不会返回nil。所以安静很好的方式使铸造成功..如果它没有运行时错误......