调用scrollToRowAtIndexPath时的SIGABRT

时间:2014-08-23 00:18:17

标签: ios uitableview swift

在应用程序中,我正在拉一个JSON数组并使用它来填充UITableView:

class TableViewController: UITableViewController, NSURLConnectionDelegate {
    var tableData: [AnyObject] = []
    // ...

    func connectionDidFinishLoading(connection: NSURLConnection!) {
        var dataAsString = NSString(data: data, encoding: NSUTF8StringEncoding)
        var err: NSError

        var json = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary

        // After parsing JSON...
        tableData += json as Array
        tableView.reloadData()

        tableView.scrollToRowAtIndexPath(NSIndexPath(index: tableData.count - 1), atScrollPosition: UITableViewScrollPosition.Top, animated: true)
    }

    // ...
}

调用scrollToRowAtIndexPath的最后一行导致信号SIGABRT。评论该行修复了它。我是iOS开发的新手,所以任何帮助都会非常感激。提前谢谢。

2 个答案:

答案 0 :(得分:2)

您应该使用以下代码:

NSIndexPath(forRow: tableData.count - 1, inSection: 0) //O in section: if tableView has only one section

而不是:

NSIndexPath(index: tableData.count - 1)

传递给表视图的索引路径必须包含两个指定节和行的索引。

答案 1 :(得分:0)

您从未在scrollToRowAtIndexPath之前检查数据是否包含任何数据。它可能为空,在这种情况下tableData.count -1 = -1