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
。而且因为你在下一行强制展开它,它总是会崩溃。
您遇到麻烦的原因是因为您根本不需要转换为 NSIndexPath
:reloadRowsAtIndexPaths()
需要一个索引路径数组,这就是您所做的,尽管您可以使它更容易。这是重写代码的简单方法:
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"。 :)
我正在将 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
。而且因为你在下一行强制展开它,它总是会崩溃。
您遇到麻烦的原因是因为您根本不需要转换为 NSIndexPath
:reloadRowsAtIndexPaths()
需要一个索引路径数组,这就是您所做的,尽管您可以使它更容易。这是重写代码的简单方法:
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"。 :)