Delete object in Core Data
49,819
Solution 1
Its quite simple :)
[context deleteObject:favorisObj];
And the bad object is all gone.
Update
You'd just reverse it with something like this if you need a button to delete the object.
-(IBAction)removeFavoris:(id)sender {
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = [appDelegate managedObjectContext];
[context deleteObject:favorisObj];
}
Solution 2
Don't forget to save the Context after you have deleted a NSManagedObject. So here is the general code;
NSManagedObjectContext * context = [self managedObjectContext];
[context deleteObject:objectToDelete];
NSError * error = nil;
if (![context save:&error])
{
NSLog(@"Error ! %@", error);
}
In your case it should have the snippet after the for loop.
for (NSManagedObject *managedObject in array) {
[moc2 deleteObject:managedObject];
}
NSError * error = nil;
if (![context save:&error])
{
NSLog(@"Error ! %@", error);
}
Comments
-
Tidane over 3 years
How I can delete an object which I had added before with this code. Its a favorites section, in the begin, I add a gray star which adds an object coming from a fetch. Then It turns yellow and the backwards method should be star yellow = deletes.
But I have no idea how to do this.
-(IBAction)inFavoris:(id)sender { AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; NSManagedObjectContext *context = [appDelegate managedObjectContext]; NSManagedObject *favorisObj = [NSEntityDescription insertNewObjectForEntityForName:@"Favoris" inManagedObjectContext:context]; [favorisObj setValue:idTaxi forKey:@"idTaxi"]; [favorisObj setValue:nomTaxi forKey:@"nomTaxi"]; [favorisObj setValue:taxiCB forKey:@"cb"]; [favorisObj setValue:taxiAvion forKey:@"avion"]; [favorisObj setValue:taxiColis forKey:@"colis"]; [favorisObj setValue:taxiHandicape forKey:@"handicape"]; [favorisObj setValue:taxiHoraires forKey:@"horaire"]; [favorisObj setValue:lugagge forKey:@"lugagge"]; [favorisObj setValue:luxury forKey:@"luxury"]; [favorisObj setValue:languesParlees forKey:@"langues"]; [favorisObj setValue:taxiNote forKey:@"note"]; [favorisObj setValue:taxiPassengers forKey:@"passenger"]; [favorisObj setValue:taxiVote forKey:@"etoiles"]; [favorisObj setValue:taxiTel forKey:@"tel"]; [self.view addSubview:favorisB]; }
UPDATE
I made this method.. It gets the job done :)
-(IBAction)outFavoris:(id)sender { AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; NSString *testEntityId = idTaxi; NSManagedObjectContext *moc2 = [appDelegate managedObjectContext]; NSFetchRequest *fetch = [[NSFetchRequest alloc] init]; fetch.entity = [NSEntityDescription entityForName:@"Favoris" inManagedObjectContext:moc2]; fetch.predicate = [NSPredicate predicateWithFormat:@"idTaxi == %@", testEntityId]; NSArray *array = [moc2 executeFetchRequest:fetch error:nil]; for (NSManagedObject *managedObject in array) { [moc2 deleteObject:managedObject]; } [self.view addSubview:favorisO]; }