Sto istanziando un oggetto NSManagedObjectContext
a livello di delegato dell'applicazione e condividendolo su tutti i miei UIViewController
s. Ecco il codice che uso per accedervi in uno dei miei View Controller:CoreData: Cancella modifiche da NSManagedObjectContext
NSManagedObjectContext *managedObjectContext = appDelegate.managedObjectContext;
modelObj = (Model *) [NSEntityDescription insertNewObjectForEntityForName:@"Model" inManagedObjectContext:[appDelegate managedObjectContext]];
Ora, in questa schermata, ho un UITableView
con 9 righe & ogni cella ha una UITextField
. Quando l'utente immette i valori nei campi di testo, li assegno a modelObj
. Ora, il mio utente ha un'opzione per cancellare e scartare tutte le modifiche o salvarle su disco. Ho il codice di salvataggio che funziona bene. Ma nel caso in cui un utente provi a scartare le modifiche, non sono sicuro di cosa fare. Non sembra essere un metodo [managedObjectContext discardChanges]
per buttarli via tutti.
mi viene in mente un paio di modi di risolvere questo.
- Creare una nuova istanza di
NSManagedObjectContext
per ciascun controller invece di condividerne uno attraverso l'applicazione. - Oppure, potrei creare un gruppo di
NSString
s nel mio codice e salvare valori utente in esse e chiamareinsertNewObjectForEntityForName:
solo se l'utente fa clic su Salva.
Quale strada è quella giusta? O c'è un modo per rendere scartare tutte le modifiche che sono state apportate ad esso?
Grazie,
Teja.
La risposta di Tim Dean è corretta. Ma non sarebbe un approccio sbagliato creare un contesto figlio per questa schermata di modifica, inserire il nuovo oggetto lì e salvarlo solo nel contesto genitore se l'utente conferma. Altrimenti, butta via il bambino, e il gioco è fatto. –