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



我正在将NSArray转换为NSIndexPath,以便我可以在我的reloadRowsAtIndexPath中使用它,任何人都可以提出更好的解决方案,为什么我会收到警告"从NSArray强制转换为不相关的类型NSIndexPath总是失败",我必须担心这一点吗?

法典

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

你肯定要担心这一点,特别是因为你在下一行强制解开它(用!)。该警告告诉您,您正在向NSIndexPathNSArray,并且您不能这样做。换句话说,indexArray将永远nil .而且由于您在下一行强制解开包装,因此它总是会崩溃。

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

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

[indexPath]的意思是"包含indexPath的数组",因此可以轻松创建reloadRowsAtIndexPaths()正在寻找的数组。如您所见,不需要铸造。

请注意,您应该尽可能使用if let和其他安全的解包方法——Swift 的初学者应该假装 ! 的意思是"请立即崩溃"。 :)

相关内容

最新更新