gpt4 book ai didi

ios - swift fatal error : array index out of range

转载 作者:搜寻专家 更新时间:2023-10-31 08:21:26 32 4
gpt4 key购买 nike

我正在制作一个待办事项列表应用程序,但是当我尝试从我的列表中删除某些内容时,xcode 给我一个错误,提示“ fatal error :数组索引超出范围”。有人可以告诉我我的数组做错了什么导致发生这种情况吗?

import UIKit

class 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()


}
}
}

断点 EXC_BAD_INSTRUCTION 也在 eventList.removeAtIndex(indexPath.row) 处创建。

最佳答案

从数据源数组中删除项目是不够的。您还必须告诉 TableView 该行已删除:

if editingStyle == .Delete {

eventList.removeAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)

// ...
}

否则 TableView 将调用原始数据源方法行数,导致超出范围错误。

或者,也可以在修改数据源时调用tableView.reloadData(),但是上面的方法提供更好的动画效果。

关于ios - swift fatal error : array index out of range,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27641761/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com