import UIKitclass SecondVIEwController: UIVIEwController,UItableVIEwDelegate,UItableVIEwDataSource { overrIDe func vIEwDIDLoad() { super.vIEwDIDLoad() // Do any additional setup after loading the vIEw,typically from a nib. } overrIDe func dIDReceiveMemoryWarning() { super.dIDReceiveMemoryWarning() // dispose of any resources that can be recreated. } func tableVIEw(tableVIEw: UItableVIEw,numberOfRowsInSection section: Int) -> Int { return eventList.count } func tableVIEw(tableVIEw: UItableVIEw,cellForRowAtIndexPath indexPath: NSIndexPath) -> UItableVIEwCell { var cell = UItableVIEwCell(style: UItableVIEwCellStyle.Default,reuseIDentifIEr: "cell") cell.textLabel?.text = eventList[indexPath.row] return cell } overrIDe func vIEwWillAppear(animated: Bool) { if var storedEventList : AnyObject = NSUserDefaults.standardUserDefaults().objectForKey("EventList") { eventList = [] for var i = 0; i < storedEventList.count; ++i { eventList.append(storedEventList[i] as Nsstring) } } } func tableVIEw(tableVIEw: UItableVIEw,commitEditingStyle editingStyle: UItableVIEwCellEditingStyle,forRowAtIndexPath indexPath: NSIndexPath) { if(editingStyle == UItableVIEwCellEditingStyle.Delete) { eventList.removeAtIndex(indexPath.row) NSUserDefaults.standardUserDefaults().setobject(eventList,forKey: "EventList") NSUserDefaults.standardUserDefaults().synchronize() } }}
断点表示正在eventList.removeAtIndex(indexPath.row)中创建EXC_BAD_INSTRUCTION.
解决方法 仅从数据源数组中删除该项是不够的.您还必须告诉表视图该行已删除:
if editingStyle == .Delete { eventList.removeAtIndex(indexPath.row) tableVIEw.deleteRowsAtIndexPaths([indexPath],withRowAnimation: .automatic) // ...}
否则,表视图将调用原始数据源方法
行数,导致超出范围错误.
或者,您可以在修改数据源时调用tableVIEw.reloadData(),但使用上述方法给出了一个更好的动画.
总结以上是内存溢出为你收集整理的ios – Swift致命错误:数组索引超出范围全部内容,希望文章能够帮你解决ios – Swift致命错误:数组索引超出范围所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)