La mia app utilizza Firebase per sincronizzare e ripristinare i dati. Io uso il metodo setValue:withCompletionBlock:
per inserire, aggiornare ed eliminare oggetti Firebase. Questo metodo viene chiamato ogni volta che c'è un CoreData salvataggio, la sincronizzazione in tal modo tutte le mie modifiche locali a FirebasePersistenza di Firebase, svuota la cache di Firebase
- (void) setValue:(id)value withCompletionBlock:(void (^)(NSError* error, Firebase* ref))block;
Ora la sincronizzazione file caricati tutti i dati locali per Firebase, mentre il ripristino sostituisce i dati locali con i dati Firebase.
- (void) observeSingleEventOfType:(FEventType)eventType withBlock:(void (^)(FDataSnapshot* snapshot))block;
osservo FEventTypeValue
e utilizzare il FDataSnapshot
per ottenere i dati dal Firebase e ripristinare i dati locali.
Quindi tutto funziona perfettamente per me finché non ho impostato persistence
in Firebase.
[Firebase setOption:@"persistence" to:@YES];
Ora, quando persistence
inizia, quando aggiorno, diciamo inserire un oggetto in Firebase, e quindi ripristinare i dati prima dell'inserimento viene ripristinata. cioè l'oggetto appena inserito non viene ripristinato. Tuttavia, se ripristino nuovamente, l'oggetto inserito viene ripristinato. La stessa cosa accade quando un oggetto viene cancellato. L'oggetto eliminato riappare quando ripristino per la prima volta e scompare quando ripristino di nuovo. Vedo che gli oggetti Firebase sono inseriti e/o cancellati correttamente attraverso la vista dati Firebase.
Non sono sicuro di cosa sto facendo male qui. Ho solo un problema quando ripristino. Penso che la cache di Firebase stia causando questo problema di ripristino. Sto pensando di cancellare la cache di Firebase prima del ripristino. La mia domanda è
- Cancellare la cache prima di ripristinare un buon metodo?
- Se sì, come cancellare la cache di Firebase?
- Se no, puoi suggerirmi il metodo migliore per ripristinare i dati.
È ancora così? Sembra che io stia correndo su questo stesso problema. Verifica se il nome utente esiste, se no, crea utente. Se l'utente si disconnette e prova a creare un nuovo utente con lo stesso nome utente, funzionerà perché la cache non viene aggiornata. –
Sono stato un grande fan di Firebase. Ma per questo, devo dire onestamente che questo è un grosso limite. Firebase dovrebbe aggiungere un nuovo parametro nel metodo 'fetchNewData: Bool'.Il comportamento previsto imprevisto non è un comportamento previsto. Ci sono molti casi in cui ciò potrebbe fallire, ad es. Impaginazione. La maggior parte di noi non osserverebbe il valore di una pagina quando si esegue l'impaginazione, altrimenti la pagina precedente potrebbe essere aggiornata e il concetto di impaginazione stesso (ovvero ridurre il trasferimento di dati) è diventato inutile poiché il metodo di osservazione continua ad aggiornare i dati della pagina precedente e anche noi non possiamo usare 'removeObserver' –
Qualche correzione per questo? – Relm