reloadRowsAtIndexPaths与JSON imageUrls崩溃

时间:2016-11-06 16:07:35

标签: ios json swift uitableview tableview

我有一个UITableView,我用JSON字符串填充数据。 看一下pastebin中的代码。

那时:

dispatch_async(dispatch_get_main_queue(), { () -> Void in
                self.tableView.beginUpdates()
                self.tableView.reloadRowsAtIndexPaths(
                    [indexPath],
                    withRowAnimation: .Fade)
                self.tableView.endUpdates()
            })

失败了。

我收到以下消息:

2016-11-06 16:32:06.579471 SO-33975355[4872:1389586] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'attempt to delete row 7 from section 0 which only contains 0 rows before the update'

如果我删除reloadRowsAtIndexPaths,它可以正常工作但我不会更新行,除非您滚动或旋转设备。当然我希望它直接更新。

我想它与快速有关?但我完全无能为力,因为我修改了this from the example。 (该示例不适用于JSON,但使用来自维基百科的网址)

如果有人可以提供帮助,我会很高兴。

3 个答案:

答案 0 :(得分:0)

在致电self.tableView.reloadRowsAtIndexPaths之前,请确保已创建tableView并正确设置dataSource。还应该为tableView(在self.tableView.reloadRowsAtIndexPaths之前)调用以下两个数据源。

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) {
        //Please return the maximum number of rows you are expecting from JSON. This is required because when you do reloadRowsAtIndexPaths, it should know that row index already exist
    }
        func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
       //Return cell
}

答案 1 :(得分:0)

错误很明显:

  

原因:'尝试从更新'

之前仅包含0行的第0部分删除第7行

您正尝试重新加载第7部分中的第一行,但第7部分没有行,因此没有第一行。

Tripple检查您的数据模型。

答案 2 :(得分:0)

试试这个:

 self.tableView.beginUpdates()
 self.tableView.reloadRowsAtIndexPaths(
                    [indexPath],
                    withRowAnimation: .Fade)
 self.tableView.endUpdates()