Swift ︰ 从 NSArray 转换为无关类型 NSIndexPath 总是失败

标签: ios Swift
发布时间: 2017/3/6 23:38:27
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我会投 NSArray 到 NSIndexPath,我可以使用我的 reloadRowsAtIndexPath,有人能想出更好的解决方案,为什么做得到警告"转换从 NSArray 到 NSIndexPath 总是失败无关类型"和不必担心这吗?

代码

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

解决方法 1:

你肯定有担心这件事,尤其是因为你强迫打开它 (与 ! ) 在紧接着的下一行上。警告告诉你你铸造 NSArrayNSIndexPath ,和你做不到。换句话说, indexArray 将永远 nil 。因为你强迫打开它在下一行,它总是会崩溃。

你有问题的原因是因为你不需要强制转换为 NSIndexPath 在所有︰ reloadRowsAtIndexPaths() 预计数组的索引路径,这是你所造的虽然你可以使它容易得多。这里是简单的方法来重写您的代码︰

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

[indexPath]是指"一个数组,包含 indexPath ",所以,创建数组, reloadRowsAtIndexPaths() 很容易找。正如你所看到的没有强制类型转换是必需的。

请注意,您应该使用 if let 和其他安全展开方法,尽可能多地 — — 初学者到 Swift 应该假装 ! 手段"请崩溃现在"。:)

官方微信
官方QQ群
31647020