Corsi di programmazione web e mobile online
Pagina 1 di 2 12 UltimaUltima
Risultati da 1 a 10 di 13

Discussione: Refresh CoreData

  1. #1
    Junior Member
    Data Registrazione
    Jul 2011
    Messaggi
    48

    Refresh CoreData

    Corso online di programmazione android e java
    Ciao a Tutti,
    mi sto cimentando con CoreData ed ho subito un problemino da porvi:

    nell' "AppDelegate" gestisco la definizione delle classi di base
    Codice:
    Solo gli utenti registrati possono visualizzare il codice. Only registered members can view code.
    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:
    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 10:21

  2. #2
    Administrator L'avatar di ignazioc
    Data Registrazione
    Jul 2010
    Messaggi
    3,912
    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.

    La mia libreria su anobii e la wishlist su amazon.co.uk e il mio hosting provider

  3. #3
    Junior Member
    Data Registrazione
    Jul 2011
    Messaggi
    48
    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
    Codice:
    Solo gli utenti registrati possono visualizzare il codice. Only registered members can view code.
    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.

  4. #4
    Administrator L'avatar di ignazioc
    Data Registrazione
    Jul 2010
    Messaggi
    3,912
    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?

    La mia libreria su anobii e la wishlist su amazon.co.uk e il mio hosting provider

  5. #5
    Junior Member
    Data Registrazione
    Jul 2011
    Messaggi
    48
    ho provato sia con
    Codice:
    Solo gli utenti registrati possono visualizzare il codice. Only registered members can view code.
    che con
    Codice:
    Solo gli utenti registrati possono visualizzare il codice. Only registered members can view code.
    ma nulla di fatto.

    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 15:55

  6. #6
    Junior Member
    Data Registrazione
    Jul 2011
    Messaggi
    4
    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!

  7. #7
    Junior Member
    Data Registrazione
    Jul 2011
    Messaggi
    48
    Citazione Originariamente Scritto da janfo Visualizza Messaggio
    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!
    Si...si, grazie.
    In realtà il comando che usavo era [context save:&error], ma visto che non non mi faceva vedere in lettura il database aggiornato, ho provato delle varianti :-)

    Per il discorso dell'inquadramento di Core Data....bè speriamo tu abbia ragione :-)

  8. #8
    Administrator L'avatar di ignazioc
    Data Registrazione
    Jul 2010
    Messaggi
    3,912
    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...

    La mia libreria su anobii e la wishlist su amazon.co.uk e il mio hosting provider

  9. #9
    Junior Member
    Data Registrazione
    Jul 2011
    Messaggi
    4
    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?

  10. #10
    Junior Member
    Data Registrazione
    Jul 2011
    Messaggi
    48
    Corso online di programmazione android e java
    Citazione Originariamente Scritto da janfo Visualizza Messaggio
    ... Dove sta quel codice?
    questo è il codice che uso per richiamare i dati
    Codice:
    Solo gli utenti registrati possono visualizzare il codice. Only registered members can view code.
    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) :-)

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •