尝试从UITableView删除时出现错误。我的TableView来自CoreData。这是我的代码。
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if (editingStyle == UITableViewCellEditingStyle.delete) {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
context.delete(mealCore[indexPath.row])
appDelegate.saveContext()
print("context saved")
tableView.deleteRows(at: [indexPath], with: .fade)
}
}
Run Code Online (Sandbox Code Playgroud)
我的上下文正在保存。但是,当它尝试从tableview中删除它时,它由于以下错误而崩溃:
更新无效:部分0中的行数无效。更新(5)之后,现有部分中包含的行数必须等于更新(5)之前该部分中包含的行数,再加上或减去该数字从该部分插入或删除的行数(已插入0,已删除1),加上或减去移入或移出该部分的行数(移入0,移出0)。
非常感谢任何建议。谢谢!!!
仅添加一些可能有帮助的代码?我可能做错了:var mealCore = NSManagedObject公共函数tableView(_ tableView:UITableView,cellForRowAt indexPath:IndexPath)-> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! CustomTableViewCell
let dateFormatter = DateFormatter()
dateFormatter.dateFormat="dd/mm/yyyy"
let mealRec = mealCore[indexPath.row]
cell.mealName!.text = mealRec.value(forKey: "meal") as? String
if let dateHolder = mealRec.value(forKey: "mealdate"){
cell.mealDate.text = dateFormatter.string(from: dateHolder as! Date)
}
if let data = mealRec.value(forKey: "mealimage")as? NSData {
cell.mealImage?.image = UIImage(data: data as Data)
}
return cell
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let managedContext = appDelegate.persistentContainer.viewContext
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName:"FoodLog")
do {
let results = try managedContext.fetch(fetchRequest)
mealCore = results as! [NSManagedObject]
} catch let error as NSError {
print("Could not fetch \(error), \(error.userInfo)")
}
}
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return mealCore.count
}
Run Code Online (Sandbox Code Playgroud)
您需要从mealCore数组中删除对象。
迅捷3
mealCore.remove(atIndex: indexPath.row)
Run Code Online (Sandbox Code Playgroud)
斯威夫特4
mealCore.remove(at: indexPath.row)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2113 次 |
| 最近记录: |