Ios 如何在按下UI按钮后从核心数据中删除对象?

Ios 如何在按下UI按钮后从核心数据中删除对象?,ios,swift,core-data,uicollectionview,uicollectionviewcell,Ios,Swift,Core Data,Uicollectionview,Uicollectionviewcell,目前我有一个UICollectionViewCell,当按下按钮(右上角的X)时,它应该从coreData中删除,然后重新加载UICollectionView: 到目前为止,当我按下“X”按钮时,什么也没有发生,尽管我注意到在我停止模拟器并将其重新打开后,保存在coreData中的所有项目都消失了。相反,应该发生的只是按下“X”后需要立即消失并从coreData中删除的特定单元格。代码如下: // MARK: CoreData func getContext () -> NSM

目前我有一个UICollectionViewCell,当按下按钮(右上角的X)时,它应该从coreData中删除,然后重新加载UICollectionView:

到目前为止,当我按下“X”按钮时,什么也没有发生,尽管我注意到在我停止模拟器并将其重新打开后,保存在coreData中的所有项目都消失了。相反,应该发生的只是按下“X”后需要立即消失并从coreData中删除的特定单元格。代码如下:

  // MARK: CoreData

  func getContext () -> NSManagedObjectContext {
    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    return appDelegate.persistentContainer.viewContext
  }

  func deleteFromCoreData() -> Void {
    let moc = getContext()
    let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Movie")

    let result = try? moc.fetch(fetchRequest)
    let resultData = result as! [Movie]

    for object in resultData {
      moc.delete(object)
    }

    do {
      try moc.save()
      print("saved!")
    } catch let error as NSError  {
      print("Could not save \(error), \(error.userInfo)")
    } catch {

    }

  }




  @IBAction func deleteButtonPressed(_ sender: Any) {

    self.deleteFromCoreData()
    DispatchQueue.main.async {
      self.collectionView?.reloadData()
    }
  }
//标记:CoreData
func getContext()->NSManagedObjectContext{
让appDelegate=UIApplication.shared.delegate为!appDelegate
返回appDelegate.persistentContainer.viewContext
}
func deleteFromCoreData()->Void{
让moc=getContext()
let fetchRequest=NSFetchRequest(entityName:“电影”)
let result=try?moc.fetch(fetchRequest)
让resultData=结果为![电影]
对于resultData中的对象{
主运行中心删除(对象)
}
做{
试试moc.save()
打印(“已保存!”)
}将let错误捕获为NSError{
打印(“无法保存\(错误),\(错误.用户信息)”)
}抓住{
}
}
@iAction func DeleteButton已按下(\发送方:任意){
self.deleteFromCoreData()
DispatchQueue.main.async{
self.collectionView?.reloadData()
}
}

在获取中似乎没有使用谓词。您实际上是在选择每个“电影”对象,然后循环删除每个对象。我对核心数据还是新手,您如何使用谓词仅删除当前选定的对象?在提取之前,您将分配NSPredicate;类似于fetchRequest.predicate=NSPredicate(格式:“movieTitle==%@”,“Logan”)和“movieTitle”,这是我编造的…它应该是您要筛选的数据模型中字段的名称。您在获取中似乎没有使用谓词。您实际上是在选择每个“电影”对象,然后循环删除每个对象。我对核心数据还是新手,您如何使用谓词仅删除当前选定的对象?在提取之前,您将分配NSPredicate;类似于fetchRequest.predicate=NSPredicate(格式:“movieTitle==%@”,“Logan”)和“movieTitle”,这是我编造的……它应该是您想要过滤的数据模型中字段的名称。