2016-05-15 4 views
0

ユーザーがテーブルビューでセルを押しても、それをnilと比較できないかどうか確認しようとしていますか?セルが押されていないかどうかを確認するには?あなたのアプリをクラッシュすること - これはハンドラユーザがテーブルビューNSIndexPathは決してnilにはなりません。比較は許可されません。

func handleLongPress(gestureRecognizer: UILongPressGestureRecognizer) { 
    let p: CGPoint = gestureRecognizer.locationInView(self.tableView) 
    let indexPath: NSIndexPath = self.tableView.indexPathForRowAtPoint(p)! 
    if indexPath == nil{ 

    } 
    else if gestureRecognizer.state == .Began { 
     print(indexPath.row) 
    } 

} 

答えて

4

上で長押しをするときは、アンラップを強制し、その後nilをチェックするべきではないです。あなたがしなければならないのは、アンラップを落として比較することです!

func handleLongPress(gestureRecognizer: UILongPressGestureRecognizer) { 
    let point = gestureRecognizer.locationInView(self.tableView) 
    let indexPath = self.tableView.indexPathForRowAtPoint(point) 
    if let touchedPath = indexPath { 
     if gestureRecognizer.state == .Began { 
      print(touchedPath.row) 
     } 
    } 
} 
+0

THANKS! ITは働いた –

+0

あなたは物事を混同しています。彼が言っている**コンパイラ**のエラーがあります。コンパイラはあなたがすでに私を強制的にアンラップしていると言っています。決してnilではないので、私は決してその行に入りません!それは私があなたの言葉が混乱していると思いますが、あなたはその問題を分けていないと思います。 – Honey

+0

@Honeyクラッシュに関する声明は、アンラップだけの力に関するものでした。明示的にnilをチェックするのはコンパイラのエラーで、ここでOPを最初にもたらしたものです – luk2302

関連する問題