2016-11-06 71 views
0

我有一個UITableView,我用JSON字符串填充數據。 查看pastebin中的代碼。reloadRowsAtIndexPaths與JSON imageUrls崩潰

在這一點上:

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,但使用維基百科的URL)

如果有人能幫忙,我會很高興。

回答

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 
} 
0

錯誤是相當清楚的:

原因:「嘗試從部分0只包含更新之前0行刪除第7行」

您正在嘗試重新加載第7節的第一行,但第7節有零行,所以沒有第一行。

Tripple檢查您的數據模型。

0

試試這個:

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