1

I try to delete a row from coredata. I handle the row but I didnt delete. When I try context.delete() It requires NSManagedObject in (). How I convert this result to NSManagedObject ?

func deleteElement(postUid:String){

    let appDel:AppDelegate = (UIApplication.shared.delegate as! AppDelegate)
    let context:NSManagedObjectContext = appDel.persistentContainer.viewContext

    let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Posts")
    let predicate = NSPredicate(format: "postUid == %@", postUid as CVarArg)
     fetchRequest.predicate = predicate

    do {

        let result = try context.fetch(fetchRequest)

        print("Result \(result)")



        try context.save()

    } catch {
        print("Error \(error)")
    }

}

// Result Print

Result [<Posts: 0x6080002901d0> (entity: Posts; id: 0xd000000000640000 <x-coredata://9A330E28/Posts/p25> ; data: {
item = "<relationship fault: 0x60c00022b900 'item'>";
lastMessageTime = "2018-05-23";
parentUid = nil;
postUid = "15e43d16";
title = Title;
userUid = ".."; })]
Ali Ihsan URAL
  • 1,894
  • 1
  • 20
  • 43

1 Answers1

2
let result = try context.fetch(request)
for object in result {
    let obj = object as! NSManagedObject
    context.delete(obj)
}

try context.save()

You basically need to fetch your objects and then delete them, one by one. Then you just save your context as usual.

Alejandro Iván
  • 3,969
  • 1
  • 21
  • 30