繁体   English   中英

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

[英]Swift : Cast from NSArray to unrelated type NSIndexPath Always fails

我正在将NSArray投射到NSIndexPath,以便可以在reloadRowsAtIndexPath中使用它,有人可以提出更好的解决方案,为什么我会收到警告“从NSArray广播到无关类型的NSIndexPath总是失败”,我是否需要为此担心?

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

您绝对必须为此担心,尤其是因为您在下一行强制将其展开(用! )。 该警告告诉您正在将NSArray强制转换为NSIndexPath ,并且您不能这样做。 换句话说, indexArray将始终为nil 并且由于您在下一行强制打开包装,因此它将始终崩溃。

遇到麻烦的原因是,您根本不需要reloadRowsAtIndexPaths()NSIndexPathreloadRowsAtIndexPaths()期望使用索引路径数组,尽管您可以更轻松地完成此操作,但这正是您所创建的。 这是重写代码的简单方法:

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

[indexPath]意思是“一个包含indexPath的数组”,因此可以轻松地创建reloadRowsAtIndexPaths()寻找的数组。 如您所见,不需要强制转换。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM