可选绑定功能与可选链接有何不同?

时间:2016-06-08 20:00:41

标签: swift optional

已编辑:

我正在学习Raywenderlich的教程。我的问题是为什么我们使用可选的绑定,即if let它有什么区别?为什么我们不能使用可选链接 - 类似于A线和A线; B?

 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("IconCell", forIndexPath: indexPath)
    let icon = icons[indexPath.row]

    cell.textLabel?.text = icon.title // Line A
    cell.detailTextLabel?.text = icon.subtitle // Line B

   if let imageView = cell.imageView, iconImage = icon.image { //Line C
      imageView.image = iconImage
    }

教师的解释是:

当我们实例化图标时,我们会根据字符串获得对图像的引用...如果由于某种原因图像未包含在包中,重命名或删除,那么该图标可能没有与之相关的图像......我们必须使用if if来确保它在那里。

我仍然不明白其中的区别。

1 个答案:

答案 0 :(得分:6)

如果您正在考虑

scheduler caught exception:
no implicit conversion of String into Integer
C:/dashing/test_board/jobs/issue_types.rb:20:in `[]'
C:/dashing/test_board/jobs/issue_types.rb:20:in `block (2 levels) in <top (requi
red)>'
C:/dashing/test_board/jobs/issue_types.rb:20:in `select'

等同于C行。

如果cell.imageView?.image = icon.image // let's call this Line D 不为零,而cell.imageView为零,则行D将通过将其设置为nil来删除imageView的原始图像。

但是,在C行中,不会输入条件,因此即使icon.image为零也保持原始图像。

C行相当于

icon.image

我猜你的教授只是想让它更明确。