2015-12-20 73 views
-3

嗨,這是我的代碼,我不斷收到錯誤,當我刪除一行。 我知道我的數組沒有被更新,因爲我刪除了一行,因此出現了錯誤。 Orerlist.list是一個數組獲取我的數據如何解決斷言失敗?

有多少我解決這個問題?

更新無效:部分0中的行數無效。更新(1)後現有部分中包含的行數必須等於更新前(1)部分中包含的行數,加上或減去從該部分插入或刪除的行數(0插入,1刪除),加上或減去移入或移出該部分的行數(0移入,0移出)。

class RootTableViewController: UITableViewController,MenuItemSelectionDelegate { var orderList = OrderList() var delegate:MenuItemSelectionDelegate! = nil

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Uncomment the following line to preserve selection between presentations 
    // self.clearsSelectionOnViewWillAppear = false 

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller. 
    // self.navigationItem.rightBarButtonItem = self.editButtonItem() 
} 


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

// MARK: - Table view data source 

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    // Return the number of sections. 
    return 1 
} 


override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    // Return the number of rows in the section. 
    return orderList.list.count 
} 

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

    cell.textLabel?.text = orderList.list[indexPath.row].menuItem 

    return cell 
} 


// Override to support conditional editing of the table view. 
override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> 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, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { 
    if editingStyle == .Delete { 
     // Delete the row from the data source 

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




    } 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 func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "reserve"{ 
     let vc = segue.destinationViewController as! BeautyViewController 
     vc.delegate = self 

    } 
} 



func didSelectMenuItem(controller: UITableViewController, order: OrderModel) { 
    orderList.addList(order) 
    controller.navigationController?.popViewControllerAnimated(true) 
    tableView.reloadData() 
} 

}

+1

#2是_not_的論壇。不要將[解決]添加到標題。 – dandan78

回答

0

你必須刪除從orderList.list相應的元素爲好。

否則,你告訴tableview你刪除了一些數據,然後重新查詢數據並發現數據保持不變 - 這與你剛纔告訴它的矛盾。

喜歡的東西

orderList.list.removeAtIndex(indexPath.row) 
+0

但orderList是從另一個控制器獲取我的數據的數組。 – Ebin

+0

@Ebin爲什麼這很重要?要麼從數組中刪除元素,要麼刪除從tableview中刪除元素的能力 - 在另一個上。 – luk2302

+0

哈哈謝謝隊友!我沒有放入orderList.list。繼續輸入它作爲orderList。事情應該現在工作:) – Ebin