non credo che dipenda dall'effettivo salvataggio sul database, tu ti interfacci con il context....
se hai una tabella prova a richiamare il metodo reloadData.
Ciao a Tutti,
mi sto cimentando con CoreData ed ho subito un problemino da porvi:
nell' "AppDelegate" gestisco la definizione delle classi di base
ed in altre ViewControllers riprendo queste classi per registrare o richiamare i dati dallo stesso database:Codice:Solo gli utenti registrati possono visualizzare il codice. Only registered members can view code.
e qui il problemino:Codice:Solo gli utenti registrati possono visualizzare il codice. Only registered members can view code.
se da una ViewController salvo i dati, ed in un'altra ViewController li richiamo, non mi vengono letti perché non realmente salvati nel database.
Come faccio, quindi a scrivere definitivamente e/o a fare un refresh del database stesso in modo tale che se salvo da una parte, mi viene letto dall'altra senza dover chiudere e poi riaprire l'app?
Centra qualcosa "refreshObject:mergeChanges:" ?
Grazie
Ultima modifica di fclauss; 07-02-12 alle 11:21
non credo che dipenda dall'effettivo salvataggio sul database, tu ti interfacci con il context....
se hai una tabella prova a richiamare il metodo reloadData.
No, non uso una tabella; i dati che salvo li inserisco poi in un grafico che richiamo in un'altra view.
Questo è il codice che uso per salvare
questo è invece, il codice che uso per richiamare i dati che però, come già detto, non include i nuovi records aggiunti, se non con la chiusura/riapertura dell'app.Codice:Solo gli utenti registrati possono visualizzare il codice. Only registered members can view code.
Codice:Solo gli utenti registrati possono visualizzare il codice. Only registered members can view code.
magari non ho inquadrato bene il problema...non sono molto pratico con coredata. se il problema è quello del salvataggio non puoi richiamare esplicitamente il metodo save?
ho provato sia con
che conCodice:Solo gli utenti registrati possono visualizzare il codice. Only registered members can view code.
ma nulla di fatto.Codice:Solo gli utenti registrati possono visualizzare il codice. Only registered members can view code.
Il discorso del salvataggio è una mia supposizione.
Leggevo che i dati vengono in realtà definitivamente scritti con la chiusura dell'app per cui, se richiamo tali dati da un'altra parte creando una nuova variabile vado in realtà, a leggere un archivio non aggiornato.
Maledetto CoreData.
PS
Stavo ragionando su una cosa: ma se io utilizzassi NSUserDefaults invece del core data?
D'altronde, il database dovrebbe essere piccolo (sicuramente < a 50 records) ed ogni record è costituito da 2 dati: un valore ed una data.
Creo due array (oppure lavoro con i Dictionary), li modifico come voglio, e li risalvo.
Ultima modifica di fclauss; 07-02-12 alle 16:55
Scusa, ma leggendo il tu codice ho notato un'errore: non devi, dopo aver inserito i dati nel database salvare i dati con [managedObjectContext save:&error]; ma con [context save:&error] che è l'oggetto NSManagedObjectContext che hai istanziato per inserire i dati!
Io ti consiglio Core Data, se riesci ad inquadrarlo poi lo troverai veramente semplice!
confermo che coredata può sembrare piuttosto ostico, come ho già detto io lo utilizzo veramente poco e in maniera basilare.
Secondo me per gestire 30 record del tipo che hai descritto forse non vale la pena mettersti a studirea coredata...cioè, se lo sai usare e hai dimestichezza ok, ma se devi impazzirci dietro puoi usare o direttamente sqlite oppure salvi un dictionary su filesystem...
Ma secondo me non è un problema di Core Data, ma di codice nel secondo View controller che usi per richiamare i dati! Dove sta quel codice?
questo è il codice che uso per richiamare i dati
ho postato pure direttamente nel forum della apple e mi hanno risposto che "NSFetchRequest" non aggiorna dinamicamente per cui o rieseguo una FetchRequest e ricarico i dati dopo la modifica (ma credo sia valido se si usa una tabella), oppure uso un NSFetchedResultsController (che però non so usare e quindi me lo devo studiare) :-)Codice:Solo gli utenti registrati possono visualizzare il codice. Only registered members can view code.