Core data 无法从核心数据中删除,swift4
我无法从核心数据中删除数据。下面是我的代码。当我删除时,数据会从表中删除,但一旦我返回,它会再次显示,因为它不会从核心数据中删除。谢谢Core data 无法从核心数据中删除,swift4,core-data,swift4,Core Data,Swift4,我无法从核心数据中删除数据。下面是我的代码。当我删除时,数据会从表中删除,但一旦我返回,它会再次显示,因为它不会从核心数据中删除。谢谢 override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { let data = (fav[indexPath.row])
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
let data = (fav[indexPath.row])
if editingStyle == .delete {
DataSave.deleteData(dataToDelete: data)
fav.remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .automatic)
}
self.tableView.reloadData()
}
**My deleteData function** -
class func deleteData(dataToDelete:String) {
let context = getContext()
let fetchRequest = NSFetchRequest<City>(entityName: "City")
if let fetchResults = try!context.fetch(fetchRequest as! NSFetchRequest<NSFetchRequestResult>) as? [City] {
for result in fetchResults{
if result.city_name == [dataToDelete] {
context.delete(result)
print("deleted from cored data")
do {
try context.save()
} catch {
print("could not delete from core data")
}
}
}
}
}
重写func tableView(tableView:UITableView,commit editingStyle:UITableViewCellEditingStyle,forRowAt indexPath:indexPath){
let data=(fav[indexPath.row])
如果editingStyle==.delete{
DataSave.deleteData(dataToDelete:data)
fav.remove(位于:indexPath.row)
tableView.deleteRows(位于:[indexPath],带:。自动)
}
self.tableView.reloadData()
}
**我的删除数据函数**-
类func deleteData(dataToDelete:String){
let context=getContext()
let fetchRequest=NSFetchRequest(entityName:“城市”)
如果让fetchResults=try!context.fetch(fetchRequest as!NSFetchRequest)as?[City]{
对于fetchResults中的结果{
如果result.city_name==[dataToDelete]{
context.delete(结果)
打印(“从核心数据中删除”)
做{
尝试context.save()
}抓住{
打印(“无法从核心数据中删除”)
}
}
}
}
}
在context.save()之后重新加载表视图(表示在打印(“从核心数据中删除”)行之后),但是,我的代码不打印“从代码数据中删除”语句或do或catch块中的语句。它永远不会到达for循环,因此它不会在该块中重新加载tableview。当您将dataToDelete与city_名称进行比较时,为什么要将其放入数组中<代码>如果result.city\u name==[dataToDelete]可能应该是如果result.city\u name==dataToDelete