2016-03-25 60 views
1

我有一個數組,它是表視圖中的一個段的數組。 我有另一個包含數組的數組。 我正確地將它顯示在表格視圖中,但每次我想刪除它時,都會出現錯誤。 我想刪除數組內的完全項目。 這是我走到這一步:在Swift中刪除另一個數組中的項目

 class ViewController: UIViewController, UITableViewDelegate { 

     @IBOutlet var tableView: UITableView! 
     var eachSection = ["a","ss","dd","heyyyyyy","3"] 
     var eachStep = [["z","zz"],["x","xx"],["c","cc","ccc"],["r","rr","rrr","rrrr"],["o"]] 

     func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
      return eachSection.count 
     } 

     func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
      let sectionString = Array(eachStep)[section] 

      return sectionString.count 
     } 

     func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
      let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) 

      // Configure the cell... 
      let sectionString = Array(eachStep)[indexPath.section] 
      cell.textLabel?.text = sectionString[indexPath.row] 
      print(sectionString) 
      return cell 
     } 

     func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? { 
      let sectionString = eachSection[section] 
      return sectionString 
     } 

     func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { 
      let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) 
      if (editingStyle == UITableViewCellEditingStyle.Delete) { 
       var sectionString = Array(eachStep)[indexPath.section] 
       sectionString.removeAtIndex(indexPath.row) 
       tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic) 
      } 
     } 
} 

這是我得到的錯誤:

終止應用程序由於未捕獲的異常 「NSInternalInconsistencyException」,理由是:「無效的更新:無效 數包含在更新(2)之後的 現有節中的行數必須等於更新前(2)節中包含的 行的數量,正數或負數 插入的行數或從該部分刪除(0插入時, 1刪除)和正或負的行數移入或移出的 那部分(0中移動,0移出)

+0

打印錯誤請 –

+0

是你的數組是可變的?並且是來自websrvice響應(json格式數據)的數組中的數據? – sourav

+0

@OlegGordiichuk **因未捕獲的異常'NSInternalInconsistencyException'而終止應用程序,原因:'無效的更新:第0節中的行數無效。更新(2)後現有節中包含的行數必須等於在更新之前包含在該部分中的行(2),加上或減去從該部分插入或刪除的行數(0插入,1刪除),加上或減去移入或移出該部分的行數(0搬進來,0搬出來)。** – Eliko

回答

2

此錯誤包含的答案的youre問題。

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

仔細看看你在做什麼。

從一個數組中刪除不用作數據源的項目。

var sectionString = Array(eachStep)[indexPath.section] 
sectionString.removeAtIndex(indexPath.row) 

試試這個:

eachStep[indexPath.section].removeAtIndex(indexPath.row) 
+0

是的,這是錯誤,但我如何糾正它,爲什麼?我現在明白我的錯誤,但我不知道如何糾正它 – Eliko

+0

'sectionString'是eachStep內數組的副本。你需要做一些像'eachStep [indexPath.section] = sectionString'的東西來複制它。 –

+0

這兩個答案都有效!你能解釋爲什麼嗎? – Eliko