EditingStyle - 删除数组中的单元格和项目
Posted
技术标签:
【中文标题】EditingStyle - 删除数组中的单元格和项目【英文标题】:EditingStyle - Remove cell and item in an array 【发布时间】:2015-09-21 23:32:27 【问题描述】:我已经创建了一个数组
var subjectsData = [ Subject(name: "Investments", semester: 1), Subject(name: "Statistics", semester: 1), Subject(name: "Studium Universale", semester: 2) ]
还有一个tableView
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCellWithIdentifier("SubjectCell", forIndexPath: indexPath) as! SubjectCell
let subject = subjects[indexPath.row] as Subject
let Semester = "\(subject.semester)"
cell.nameLabel.text = subject.name
cell.semesterLabel.text = "Semester"
cell.semesterNumberLabel.text = Semester
return cell
var subjects: [Subject] = subjectsData
。
我现在尝试创建一个编辑函数来删除单元格/行,从而也删除数组中的相应项目。
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath)
if editingStyle == UITableViewCellEditingStyle.Delete
subjectsData.removeAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
在我看来,代码看起来合乎逻辑且功能正常,但在运行应用程序时,每当我尝试删除行/单元格并收到错误消息时就会崩溃:
'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (3) must be equal to the number of rows contained in that section before the update (3), plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out).'
每当我删除一行/单元格时,数组中的相应项也应该被删除,但如果我正确理解错误,数组似乎没有更新/删除该项?
如果有人知道为什么会发生此错误以及如何解决它,我将不胜感激。
【问题讨论】:
【参考方案1】:好的,所以我把subjectsData.removeAtIndex(indexPath.row)
改成了这个editingStyle代码
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath)
if editingStyle == UITableViewCellEditingStyle.Delete
subjects.removeAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
因为我说var subjects: [Subject] = subjectsData
。
我不知道为什么这会解决该错误,但现在当我尝试删除某些内容时,应用程序不再崩溃。
【讨论】:
以上是关于EditingStyle - 删除数组中的单元格和项目的主要内容,如果未能解决你的问题,请参考以下文章
tableview commit editingStyle 正在删除错误的条目
UITableViewCell EditingStyle Delete 无法正常工作