2016-02-13 40 views
0

當我試圖刪除一個TableView項時出現跟隨錯誤。刪除UITableView室錯誤

終止應用程序由於未捕獲的異常 「NSInternalInconsistencyException」,原因:「無效更新:無效 中的行數爲0節中包含的 現有段中的行數的更新後(4)必須是等於該部分包含的 行數在更新之前(4),加或減 插入或從該部分刪除的行數(0插入, 1刪除)以及加或減移入的行數或者出於 該部分(移入0,移出0)。

我使用下面的代碼:

override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { 

if editingStyle == .Delete { 

    let roomToDelete : House = self.frc.objectAtIndexPath(indexPath) as! House 
    moc.deleteObject(roomToDelete) 

    do { 
     try moc.save() 
     } catch { 
     print("Failed to save upon delete") 
     return 
    } 

    tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic) 
    self.tableView.reloadData() 

    } 

} 

如果我離開的代碼的最後兩行關閉,然後我沒有得到的錯誤,但該行不刪除,因爲我只取出來自核心數據的數據。如果我離開桌子並返回線路消失了。我假設這個錯誤是因爲我不知道如何將行刪除與段中的行數聯繫起來,因此存在不匹配。我所做的所有搜索都以類似的編程方式回到了我的所有搜索結果中。

+1

您是否爲FRC設置了委託並實施了關聯的方法? – pbasdf

回答

0

我能得到它的工作 -

1)刪除

tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic) 
從呈交編輯樣式功能

2)添加

self.tableView.reloadData() 

到viewDidLoad函數的結尾

0

您應該將您的視圖控制器設置爲FRC委託並使用委託方法更新表視圖。由於FRC是您的數據源,它必須知道刪除操作才能更新行數。

在你的提交方法中,你應該從上下文中刪除對象。您不應從表中刪除該行或重新加載表(應由FRC委託方法完成)。