self.tableView未被识别为UITableView,而是随机方法
为了一个非常简单的问题,我在xCode上挣扎了几个小时。我正在对UITableViewController进行子类化,在scrollViewDidScroll方法中,我尝试访问我的可见tableview行,如下所示:self.tableView未被识别为UITableView,而是随机方法,uitableview,swift,Uitableview,Swift,为了一个非常简单的问题,我在xCode上挣扎了几个小时。我正在对UITableViewController进行子类化,在scrollViewDidScroll方法中,我尝试访问我的可见tableview行,如下所示: class ShinySubclass: UITableViewController { override func scrollViewDidScroll(scrollView: UIScrollView) { let visibleIndexPaths
class ShinySubclass: UITableViewController {
override func scrollViewDidScroll(scrollView: UIScrollView) {
let visibleIndexPaths : [NSIndexPath] = self.tableView.indexPathsForVisibleRows()
...
}
}
虽然我收到了这条可爱的消息,但指向self.tableView:
ShinySubclass.swift:58:48:'(UITableView,第节中的行数:Int)
->Int'没有名为'indexPathsForVisibleRows'的成员
对我来说,这似乎是一个xCode错误。我已经有了最新的版本(6.1版(6A1052d)),我尝试过任何东西,从清洁、重建、打开/关闭房间灯等等
有什么办法吗?
indexPathsForVisibleRows
返回[AnyObject]?
,但您试图分配给一个非可选的[nsindepath]
变量。如果您只是让类型推断完成工作,代码将编译:
let visibleIndexPaths = self.tableView.indexPathsForVisibleRows()
它返回一个AnyObject
数组,因此您可能希望向下转换为正确的类型,但在这种情况下需要向下转换:
let visibleIndexPaths = self.tableView.indexPathsForVisibleRows() as? [NSIndexPath]
但是,由于我假设如果该数组不是nil
,您希望进行一些处理,并且考虑到indexPathsForVisibleRows
可以在没有可见行的情况下返回nil,因此可以使用可选绑定:
if let visibleIndexPaths = self.tableView.indexPathsForVisibleRows() as? [NSIndexPath] {
...
}
在本例中,
visibleIndexPaths
是一个非可选数组[NSIndexPath]
,它可以工作!xCode确实需要改进它的swift错误消息。。。我不能把我犯的错误和我收到的错误信息联系起来。是的,这是swift编译器的一个常见问题。我认为这可以解释为类型推断试图找到一个返回[nsindepath]
的方法,这个方法当然不存在。可能更糟。有些应该生成错误并拒绝构建的东西会尝试编译并命中segfault(编译器segfaults)。