我有一个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,但使用来自维基百科的网址)
如果有人可以提供帮助,我会很高兴。答案 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()