为什么 Swift 1.2 需要强制展开?

Why does Swift 1.2 require forced-unwrapping?

在Swift1.2以下

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

现在必须使用 !

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

第一个例子中,cell可以为nil吗?常量为零似乎很奇怪。

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

不是"forced unwrapping"。它与可选项或展开无关。它是转换运算符 as 的新版本。在 Swift 1.2 中,我们在向下转型失败时使用 as! 运算符;感叹号旨在提醒我们,如果结果证明这不是我们声称的 class,我们就会崩溃。这是总是正确的;使用 as! 而不是 as 只是帮助您意识到这一事实的一种方式。

因为向下转换必须成功..使用强制方式不会 return 零..让转换成功的安静好方法..如果没有 运行 时间错误...