Qual è il modo migliore per conservare i dati a lungo termine in iPhone Core Data o SQLite?

StackOverflow https://stackoverflow.com/questions/3037015

  •  27-09-2019
  •  | 
  •  

Domanda

Sto lavorando su iPhone app mira 3.1.3 e SDK più tardi. Voglio sapere il modo migliore per i dati a lungo termine negozio degli utenti su iPhone senza perdere le prestazioni, la coerenza e la sicurezza.

Lo so, che posso usare Core Data, PList e SQL-Lite per la memorizzazione di dati specifici dell'utente in costume formats.But, vogliono sapere che uno è buono per l'uso senza compromettere le prestazioni e la scalabilità applicazione nel prossimo futuro.

È stato utile?

Soluzione

Dipende. Il termine "dati utente" copre un'ampia scala di dimensioni, complessità e l'utilizzo ciascuna delle quali hanno diverse strategie di stoccaggio ottimale.

(1) Se la dimensione e la complessità sono bassi e l'utilizzo è in primo luogo il controllo della applicazione stessa, memorizzare i dati nelle impostazioni predefinite dell'utente utilizzando NSUserDefaults.

(2) Se la dimensione è piccola e la complessità può essere gestito da array, dizionari ecc poi conservarla in un plist. conta Dimensione perché tutti i dati memorizzati in un plist viene caricato in memoria in un unico pezzo.

(3) Se la dimensione è molto grande ma la complessità è bassa esempio un gran numero di template registra ad esempio un sistema di carte di indice, quindi utilizzare SQL diretto. SQL è più veloce per la ricerca e il salvataggio semplice e informazioni ripetitive in un grande DB.

(4) Se la complessità è molto alta, utilizzare Core Data, indipendentemente dalle dimensioni. Core Data è specificamente progettato per la gestione di informazioni complesse. Se la dimensione è piccola, utilizzare un archivio XML. Se si tratta di grandi dimensioni, utilizzare un archivio SQL.

Come ho guadagnato la familiarità con Core Data, mi ritrovo ad usarlo per quasi tutto tranne impostazioni predefinite dell'utente. Esso ha una ripida curva di apprendimento, ma una volta padrone di esso, si dispone di un potente e facile da strumento di utilizzo per la gestione dei dati delle applicazioni. probabilmente Io lo uso in situazioni in cui non è ottimale solo perché accelera i tempi di sviluppo.

Altri suggerimenti

Non sono d'accordo sulla lista di TechZen. Numero 3 è solo una risposta giusta se avete a che fare con un database legacy SQLite. Non c'è mai un motivo per scegliere SQLite grezzo su Core Data. Core Data avrà un rendimento migliore in quasi ogni situazione e ridurre la quantità di codice da scrivere da una quantità significativa.

Inoltre, vorrei mettere in guardia contro l'uso plists. Sono costosi a leggere e scrivere e un database Core Data li sovraperformare in quasi ogni situazione.

Come per l'utilizzo Core Data, è necessario utilizzare sempre un back-end SQLite (XML non è disponibile su iOS) tranne che nelle maggior parte dei casi estremi.

In breve, se si sta salvando un singolo valore, conservarlo in NSUserDefaults.

In caso contrario utilizzare Core Data.

Aggiorna

C'è una sola cosa che non può essere fatto con Core Data più performante di SQLite grezzo attualmente. Cioè la possibilità di aggiornare i valori di una singola colonna in decine di migliaia di righe. Questo perché per modificare una riga, carichi Core Data quella riga in memoria e scrive poi di nuovo fuori di nuovo.

Per ogni altra situazione che si sta per ottenere prestazioni migliori con Core Data di quanto si sta scrivendo le proprie funzioni di accesso, oggetti e trattare con la memoria e cicli di vita dello stesso.

Core Data sorpasserà eventuali funzioni di accesso dati che si sta per scrivere e sta andando a gestire la scrittura e la lettura dal file sottostante in un modo migliore di quello che sei. Perché reinventare la ruota?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top