如何解包可选值

时间:2017-07-30 17:53:58

标签: ios swift3 unwrap

我有这样的方法:

internal func handlePan(_ sender: UIPanGestureRecognizer) {
    if (sender.state == .began) {
        let initialPanPoint = sender.location(in: collectionView)
        findDraggingCellByCoordinate(initialPanPoint)
    } else if (sender.state == .changed) {
        let newCenter = sender.translation(in: collectionView!)
        updateCenterPositionOfDraggingCell(newCenter)
    } else {
        if let indexPath = draggedCellPath {
           // finishedDragging(collectionView!.cellForItem(at: indexPath)!)
            finishedDragging((collectionView?.cellForItem(at: indexPath))!)
        }
    }
}

我正在崩溃

finishedDragging((collectionView?.cellForItem(at: indexPath))!)
  

致命错误:在解包可选值时意外发现nil

我该如何解开这个? 请帮我。 感谢。

1 个答案:

答案 0 :(得分:0)

目前,您正在强制展开一个恰好是nil的可选项。因此,您需要在index的可选解包中添加一个附加子句,以确定集合视图是否可以返回该索引路径中的单元格。如果集合视图无法在索引路径返回单元格,则它将返回nil并且不会执行条件。

if let indexPath = draggedCellPath, let cell = collectionView?.cellForItem(at: indexPath){
  finishedDragging(cell)
}