2016-12-03 177 views
0

我不斷收到這樣的:嘗試添加行時,應用程序會一直崩潰嗎?

終止應用程序由於未捕獲的異常「NSInternalInconsistencyException」,理由是:「試圖插入一行0到段0,但只有0更新後,部分」

這是我的代碼:

import UIKit 

class UtilityBillTableViewController: UITableViewController { 

    var bills = [UtilityBill]() 

    override func viewDidLoad() { 
     super.viewDidLoad()   
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    // MARK: - Table view data source 

    override func numberOfSections(in tableView: UITableView) -> Int { 
     // #warning Incomplete implementation, return the number of sections 
     return 0 
    } 

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     // #warning Incomplete implementation, return the number of rows 
     return 0 
    } 

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath) 

     // Configure the cell... 

     return cell 
    } 

    // Override to support conditional editing of the table view. 
    override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool { 
     // Return false if you do not want the specified item to be editable. 
     return true 
    } 

    // Override to support editing the table view. 
    override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 
     if editingStyle == .delete { 
      // Delete the row from the data source 
      tableView.deleteRows(at: [indexPath], with: .fade) 
     } else if editingStyle == .insert { 
      // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view 
     }  
    } 

    // Override to support rearranging the table view. 
    override func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to: IndexPath) { 

    } 

    // Override to support conditional rearranging of the table view. 
    override func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool { 
     // Return false if you do not want the item to be re-orderable. 
     return true 
    } 

    // MARK: - Navigation 

    // In a storyboard-based application, you will often want to do a little preparation before navigation 
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     // Get the new view controller using segue.destinationViewController. 
     // Pass the selected object to the new view controller. 
    } 

    @IBAction func unwindToBillList(sender: UIStoryboardSegue){ 
     if let sourceViewController = sender.source as? UtilitiesViewController, let bill = sourceViewController.bill { 
      // Add a new meal item. 

      let newIndexPath = NSIndexPath(row: bills.count, section: 0) 
      bills.append(bill) 
      tableView.insertRows(at: [newIndexPath as IndexPath], with: .bottom)    
     } 

    } 
} 

回答

0

你需要做的是反映符合您的數據值numberOfSectionsnumberOfRowsInSection迴歸變量。將它們硬編碼爲0是沒有意義的。錯誤表示您已將數據插入第一部分(第0部分),但仍有0部分,這沒有意義。當然你至少需要1節。

嘗試這些實現:

override func numberOfSections(in tableView: UITableView) -> Int { 
    return 1 
} 

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return bills.count 
} 
+0

謝謝你,現在的工作,我只是想實現與reusableCell中的tableView。這是我的下一個任務 –

相關問題