2012-06-14 15 views
26

Come posso eliminare un oggetto che avevo aggiunto prima con questo codice. È una sezione dei preferiti, all'inizio, aggiungo una stella grigia che aggiunge un oggetto proveniente da un recupero. Quindi diventa giallo e il metodo all'indietro dovrebbe essere stella gialla = cancella.Elimina oggetto in Core Data

Ma non ho idea di come farlo.

Grazie in anticipo

-(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]; 

} 

aggiornamento

Ho fatto questo metodo .. Si ottiene il lavoro fatto :)

-(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]; 

} 
+0

è necessario salvare managedObject finalmente di apportare modifiche in CoreData –

risposta

60

suo abbastanza semplice :)

[context deleteObject:favorisObj]; 

E l'oggetto cattivo è tutto finito.

Aggiornamento

Faresti solo invertirlo con qualcosa di simile, se avete bisogno di un pulsante per eliminare l'oggetto.

-(IBAction)removeFavoris:(id)sender { 

    AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 

    NSManagedObjectContext *context = [appDelegate managedObjectContext]; 

    [context deleteObject:favorisObj]; 
} 
+0

Ok, ma come posso fare un metodo che è l'opposto di quanto sopra? – Tidane

+0

Devo dichiarare il favorisObj come sopra ?? Ancora non cancella niente :( – Tidane

+0

Sopra stai creando il favorisObj e aggiungendo cose ad esso. Devi prendere lo stesso oggetto e passarlo come argomento a '[context DeleteObject: arg]' –

24

Non dimenticare di salvare il contesto dopo aver eliminato NSManagedObject. Quindi ecco il codice generale;

NSManagedObjectContext * context = [self managedObjectContext]; 
[context deleteObject:objectToDelete]; 

NSError * error = nil; 
if (![context save:&error]) 
{ 
    NSLog(@"Error ! %@", error); 
} 

Nel tuo caso si deve avere il frammento dopo il ciclo for.

for (NSManagedObject *managedObject in array) { 
    [moc2 deleteObject:managedObject]; 
} 
NSError * error = nil; 
if (![context save:&error]) 
{ 
    NSLog(@"Error ! %@", error); 
}