Il problema:Core Data vs NSFileManager
Sto usando da qualche tempo il mio sistema di cache utilizzando NSFileManager
. Normalmente i dati che ricevo sono JSON e salvo salvare il dizionario direttamente nella cache (nella cartella Documenti). Quando ne avrò bisogno, andrò a prenderlo. Implemento anche, a volte quando ritengo sia preferibile, un NSDictionary
nella cartella principale con chiavi/valori per il percorso di una determinata risorsa. Ad esempio:
Risorsa sul tempo a Ginevra 17/02/2013, quindi avrei una chiave chiamata GE_17_02_2013 e il valore del percorso per il NSDictionary
con le informazioni.
Normalmente non è necessario eseguire query complesse. Ma, in qualche modo, e da quello che sto leggendo, quando hai molti dati, dovresti mantenere i Core Data. Nel mio caso, di solito ho molti dati, ma in realtà non ho mai sentito l'applicazione andare giù, o soffrire in termini di prestazioni. Quindi le mie domande sono:
In questo caso, dove a volte (la cosa tempo era solo un esempio) ho bisogno di rimuovere solo tutti i dati (un feed Twitter, per esempio) e sostituirlo con un flusso di dati completamente nuovo, è il valore di core dati? Penso che rimuovere tutti i dati e inserirli (popolandoli) sia più pesante di un semplice archivio
NSDictionary
e la sostituzione di quello vecchio.volte sarebbe envolve immagini, file di testo, ecc e la
NSFileManager
lo fa alla perfezione, quindi quali vantaggi potrebbe core Dati portare in questi casi?
P.S: Ho appena visto this inviati, in cui è fatto questo tipo di domanda e numeri dimostrare che uno è effettivamente più veloce. Tuttavia, vorrei anche una risposta empirica.
la cache è più per gli scenari offline. Quindi, in condizioni normali con accesso a Internet, di solito sostituisco i dati archiviati molto frequentemente, ecco perché ho avuto dubbi. Un altro vantaggio, è il fatto di usare solo un "NSDictionary" e di non avere il bisogno di sapere cosa c'è dentro di lui (come è composto). Avrebbe senso avere "NSManagedObject" con un solo "NSDictionary"? – Peres
La cache è importante anche per il filesystem locale. L'accesso al filesystem è molto più lento dell'accesso alla memoria. Non sono sicuro del motivo per cui non hai bisogno di sapere cosa c'è dentro quel dizionario, non lo leggi/interpreti come un punto.Se memorizzi solo un file come un altro, che è un dizionario serializzato, allora sì, non ha senso usare Core Data –
Voglio dire, so cosa c'è dentro, ma se per qualche ragione un'API cambia e aggiungi cose diverse , Non sono limitato a questo. – Peres