在xcode 6中删除我的待办事项列表中的单元格时,我随机得到一个错误 “exc_bad_access code = exc_i386_gpflt”
我有两个视图 - 第二个我输入数组“toDoList”中的项目 在第一个我显示“toDoList”中的所有项目,并有一个选项删除时,第一页的代码在这:
import UIKit
var toDoList: [String] = []
class FirstViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
//var cell = UITableViewCell()
@IBOutlet weak var itemList: UITableView!
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 toDoList.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
var cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell")
cell.textLabel.text = toDoList[indexPath.row]
return cell
}
override func viewWillAppear(animated: Bool) {
if var storedItems: AnyObject = NSUserDefaults.standardUserDefaults().objectForKey("items"){
toDoList = []
for var i = 0; i < storedItems.count; ++i{
toDoList.append(storedItems[i] as NSString)
}
}
itemList.reloadData()
}
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath){
if editingStyle == UITableViewCellEditingStyle.Delete{
toDoList.removeAtIndex(indexPath.row)
let saveData = toDoList
NSUserDefaults.standardUserDefaults().setObject(saveData, forKey: "items")
NSUserDefaults.standardUserDefaults().synchronize()
itemList.reloadData()
}
}
}
答案 0 :(得分:0)
造成错误的原因是
itemList.reloadData()
在您的功能中
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath)
为了解决您的问题,请删除该行,然后在toDoList.removeAtIndex(indexPath.row)
之后添加此行:
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.None)
此方法的作用是:删除索引路径数组指定的行,并选择为删除设置动画。 (来自Xcode快速帮助)