Cancella un oggetto di Dati di base

Come posso eliminare un oggetto che avevo aggiunto prima con questo codice. La sua una sezione preferiti, all’inizio, ho aggiunto una stella grigia che aggiunge un oggetto proveniente da un recupero. Poi diventa giallo e indietro metodo dovrebbe essere la star giallo = elimina.

Ma non ho idea di come fare questo.

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

} 
  • devi salvare managedObject, infine, di apportare modifiche in coredata
InformationsquelleAutor Tidane | 2012-06-14



2 Replies
  1. 62

    È abbastanza semplice 🙂

    [context deleteObject:favorisObj];

    E l’oggetto cattivo è tutto andato.

    Aggiornamento

    Devi solo invertire con qualcosa di simile a questo 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];
    }
    • Ok, ma come posso fare un metodo che è l’opposto di cui sopra ?
    • Devo dichiarare il favorisObj come sopra?? Ancora non elimina nulla 🙁
    • Al di sopra si sta creando il favorisObj poi aggiungere qualcosa. Avete bisogno di prendere lo stesso oggetto e passarlo come argomento [context deleteObject:arg]
    • Ricevo errore in rosso causa favorisObj non è stato trovato
    • sì, devi avere un oggetto per passare in. non si può semplicemente digitare il nome. avete bisogno di un puntatore ad esso.
    • Come posso rendere il puntatore?
    • Finalmente ho ottenuto il lavoro fatto 🙂 la Modifica di risposta. GRAZIE RYAN
    • Contento che hai capito. Felice di codifica 🙂
    • Questa è vecchio, ma una domanda veloce. È necessario utilizzare lo stesso contesto, in quanto l’oggetto è stato recuperato da?
    • Sì. Gli oggetti sono molto legati al loro contesto. Se avete bisogno di accedere da un altro contesto, in qualsiasi modo, di salvare l’oggetto con il suo contesto originale, per poi prelevarla dal nuovo contesto prima di effettuare tali modifiche.

  2. 25

    Non dimenticare di salvare il Contesto dopo aver eliminato un NSManagedObject. Così qui è il codice generale;

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

    Nel tuo caso dovrebbe 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);
    }

Lascia un commento