美文网首页
Thinking in Swift 系列文章翻译1-1

Thinking in Swift 系列文章翻译1-1

作者: 你weixiao的时候很美 | 来源:发表于2018-04-11 17:36 被阅读9次
第一篇附加:牺牲小马🐴

这里是原文地址 原文链接

本篇讲了一些可以用到! 强制解包的情况,是第一篇的一点附加。

1. IBOutlets + Dependency Injection

当使用OBoutlets 和 Dependency Injection(依赖注入)的时候,这两种情况下,会在初始化之后马上得到值。当你使用他们的时候,他们肯定不会是空。这时,可以使用强制解包。

2. UIImage, UIStoryboard, UITableViewCell

需要使用名字或者identifier这种常量去生成的。

UIImage(named: …)
UIStoryboard(name:,bundle:)
UIStoryboard.instantiateViewControllerWithIdentifier(_:)
UITableView.dequeueReusableCellWithIdentifier(_:, forIndexPath:)
// and some other similar stuff… 类似的情况

对这些情况,如果你想让你的程序崩溃,以便你提前发现去修复这些错误,如你bundle中没有该名字的图片,或者identifier没有设置或写错。

对这些情况,你可以使用guard的写法来提供更多的准确的信息来辅助你找到该错误

guard let cell = tableView.dequeueReusableCellWithIdentifier("foo", forIndexPath:indexPath) as? MyCustomCell else {
  fatalError("cell with identifier 'foo' and class 'MyCustomCell' not found. "
    + "Check that your XIB/Storyboard is configured properly.")
}
3.

本系列文章的第一部分更多的是面向Swift新手,因为他们总是强迫解包,因为Xcode告诉他们,或者因为他们没有真正理解为什么Optionals对他们有好处。这就是为什么我没有谈到那些我认为更加高级的用例。

所以可以在有些情况下使用!。但是,我仍然认为,第1部分的建议是:只用!如果你真的明白你为什么使用它的时候。

相关文章

网友评论

      本文标题:Thinking in Swift 系列文章翻译1-1

      本文链接:https://www.haomeiwen.com/subject/xeszhftx.html