2016-12-03 128 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。这是我的下一个任务 –

相关问题