ios – Swift致命错误:数组索引超出范围

ios – Swift致命错误:数组索引超出范围,第1张

概述我正在制作一个待办事项列表应用程序,但是当我尝试从列表中删除某些内容时, xcode会给出一个错误,上面写着“致命错误数组索引超出范围”.有人能告诉我,我的阵列出错了导致这种情况发生吗? import UIKitclass SecondViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 我正在制作一个待办事项列表应用程序,但是当我尝试从列表中删除某些内容时,xcode会给出一个错误,上面写着“致命错误:数组索引超出范围”.有人能告诉我,我的阵列出错了导致这种情况发生吗?
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致命错误:数组索引超出范围所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1109219.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存