为什么 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 零..让转换成功的安静好方法..如果没有 运行 时间错误...
在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 零..让转换成功的安静好方法..如果没有 运行 时间错误...