如何从数据核心 swift 4 中删除 tableview index.row
Posted
技术标签:
【中文标题】如何从数据核心 swift 4 中删除 tableview index.row【英文标题】:How to delete a tableview index.row from data core swift 4 【发布时间】:2018-10-31 20:47:37 【问题描述】:我创建了一个名为Medications的实体,添加新数据的功能是:
@objc func saveUserSettings()
SVProgressHUD.show()
let name = medicationNameTextField.text
let dosage = dosageTextField.text
let frequency = medicationNameTextField.text
let reminder = dosageTextField.text
let medication = Medications(context: PersistenceService.context)
medication.name = name
medication.dosage = dosage
medication.frequency = frequency
medication.reminder = reminder
PersistenceService.saveContext()
self.meds.append(medication)
按下表格视图单元格上的删除按钮时,如何删除其中一个索引?
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath)
if editingStyle == .delete
meds.remove(at: indexPath.row)
let task = meds[indexPath.row]
PersistenceService.saveContext()
self.tableView.reloadData()
有什么想法吗?
【问题讨论】:
在这种情况下不要使用self.tableView.reloadData()
。使用self.tableView.deleteRows(at: [indexPath], with: .fade)
获得漂亮的单元格动画。
【参考方案1】:
在这里从数组中删除
meds.remove(at: indexPath.row)
不会自动将其从 coreData 中移除,您需要使用
context.delete(object)
在保存上下文之前,请参阅此处Swift 3 Core Data Delete Object
也要按正确的顺序来做
let task = meds[indexPath.row]
context.delete(task) // access context anywhere but this statement should run
PersistenceService.saveContext()
meds.remove(at: indexPath.row)
【讨论】:
对象是什么?不明白(对象)以上是关于如何从数据核心 swift 4 中删除 tableview index.row的主要内容,如果未能解决你的问题,请参考以下文章