iOS Swift: deleteRowsAtIndexPaths 崩溃
iOS Swift: Crash on deleteRowsAtIndexPaths
当我从 tableView 中删除一行时发生崩溃。不确定发生了什么。这是我的代码:
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
let items = days[indexPath.row]
self.removeItems(items, indexPath: indexPath)
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return days.count
}
删除项目
func removeItems(items: [CKRecord], indexPath: NSIndexPath) {
for item in items {
db.deleteRecordWithID(item.recordID) { (record, error) -> Void in
if error != nil {
println(error.localizedDescription)
}
dispatch_async(dispatch_get_main_queue()) { () -> Void in
if let index = find(exercises, item) {
exercises.removeAtIndex(index)
}
}
}
}
days.removeAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
}
在删除(或添加)单元格之前,您需要在涉及的 tableView 上调用 beginUpdates()
。然后删除或添加单元格。完成后,调用 endUpdates()
。
一旦你调用 endUpdates()
。请记住,一旦您调用 endUpdates()
,您的 tableView 模型必须与您删除或添加的部分和行数一致。
开始和结束更新允许 ui 为所有单元格更改呈现连贯的独特动画。
tableView.beginUpdates()
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
tableView.endUpdates()
当我从 tableView 中删除一行时发生崩溃。不确定发生了什么。这是我的代码:
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
let items = days[indexPath.row]
self.removeItems(items, indexPath: indexPath)
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return days.count
}
删除项目
func removeItems(items: [CKRecord], indexPath: NSIndexPath) {
for item in items {
db.deleteRecordWithID(item.recordID) { (record, error) -> Void in
if error != nil {
println(error.localizedDescription)
}
dispatch_async(dispatch_get_main_queue()) { () -> Void in
if let index = find(exercises, item) {
exercises.removeAtIndex(index)
}
}
}
}
days.removeAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
}
在删除(或添加)单元格之前,您需要在涉及的 tableView 上调用 beginUpdates()
。然后删除或添加单元格。完成后,调用 endUpdates()
。
一旦你调用 endUpdates()
。请记住,一旦您调用 endUpdates()
,您的 tableView 模型必须与您删除或添加的部分和行数一致。
开始和结束更新允许 ui 为所有单元格更改呈现连贯的独特动画。
tableView.beginUpdates()
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
tableView.endUpdates()