Swift:从 NSArray 转换为不相关的类型 NSIndexPath 总是失败

Swift : Cast from NSArray to unrelated type NSIndexPath Always fails

我正在将 NSArray 投射到 NSIndexPath 以便我可以在我的 reloadRowsAtIndexPath 中使用它,任何人都可以提出更好的解决方案,为什么我会收到警告 "Cast from NSArray to unrelated type NSIndexPath Always fails" 我是否必须担心这个?

代码

let indexArray : NSIndexPath? = NSArray(Objects:NSIndexPAth(forRow: 0, inSection:2)) as? NSIndexPath
self.myTableView.reloadRowsAtIndexPaths(indexArray!], withRowAnimation:UITableViewRowAnimation.None)

你肯定需要担心这一点,尤其是因为你在下一行强制解包(使用 !)。该警告告诉您您正在将 NSArray 转换为 NSIndexPath,而您不能这样做。换句话说,indexArray 将永远是 nil。而且因为你在下一行强制展开它,它总是会崩溃。

您遇到麻烦的原因是因为您根本不需要转换为 NSIndexPathreloadRowsAtIndexPaths() 需要一个索引路径数组,这就是您所做的,尽管您可以使它更容易。这是重写代码的简单方法:

let indexPath = NSIndexPath(forRow: 0, inSection:2)
self.myTableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.None)

[indexPath] 表示 "an array containing indexPath",因此很容易创建 reloadRowsAtIndexPaths() 正在寻找的数组。如您所见,不需要强制转换。

请注意,您应该尽可能使用 if let 和其他安全的解包方法——Swift 的初学者应该假装 ! 意味着 "please crash now"。 :)