2012-04-20 9 views
13

quando sviluppo un'applicazione per iPhone (Time Tracker, ToDoList ecc.) Non so mai quale sia il modo migliore per gestire i dati. Una volta ho usato un plist, la prossima volta sqlite o CoreData.Lavorare con i dati nelle app iOS (Cosa scegliere? NSData, CoreData, sqlite, PList, NSUserDefaults)

Come decidi qual è il migliore per il tuo progetto? (Solo parlando di gestione dei dati)

Per esempio, se si vuole sviluppare:

  • Time Tracker App> È PList la vostra scelta?
  • App lettore di messaggi RSS> CoreData?
  • App Foto> sqlite?
  • Client di posta elettronica>?

Per un principiante puoi indicarmi all'incirca le indicazioni giuste? (lo so che dipende molto dall'app e quello che ti piace fare con ma qualsiasi pensiero ti aiuterà)

Sono molto lontano dallo sviluppo di app complicate, sono ancora piuttosto semplici.

Grazie per l'aiuto, Marc

+1

se la tua app è 'sistema di gestione database', quindi vai per coredata.! Ma ricorda che è un framework e non un database. –

risposta

26

È possibile utilizzare queste regole di pollice per decidere quale modello di archiviazione funziona per la vostra applicazione.

  • Se i dati si inserisce in memoria del tutto ed è relativamente non strutturati, uso plist
  • Se i dati si inserisce in memoria del tutto e ha una struttura ad albero, l'uso di XML
  • Se i dati non si adatta in memoria e ha una struttura di un grafico, e l'app non ha bisogno di straordinarie funzionalità di query, usa Core Data
  • Se i dati non si adattano alla memoria, ha una struttura complessa, oppure l'app trae vantaggio dalle potenti capacità di interrogazione fornite dai database relazionali , usa sqlite
  • Se i dati devono essere segreti (per esempio. una password), utilizzare keychain.

Si noti che queste scelte spesso si sovrappongono, poiché più modelli di archiviazione si adatteranno alla stessa app. La tua decisione finale dipende dalle tue preferenze personali: scegli una tecnologia che capisci meglio.

C'era uno very good question about sqlite vs. Core Data su Stack Overflow, è possibile che si desideri leggere le risposte a tale domanda.

+0

Esattamente quello di cui avevo bisogno, ottima risposta, grazie e buon fine settimana. –

1

mia regola per ciascuno di questi potrebbe essere:

  • Time Tracker App> Core Data
  • RSS Reader App> Core Data
  • Photo App> Core Data
  • dei client di posta> Dati principali

Anche se in ogni caso ci sarebbero cose che dovresti memorizzare sul file system. Ad esempio, l'app per foto avrebbe ovviamente messo le foto sul file system.Il testo delle e-mail sarebbe sul file system, ecc. Gli attuali messaggi RSS potrebbero essere anche file di testo, ma con metadati negli oggetti Core Data.

A un certo punto, è possibile che i dati che si stanno memorizzando superino la scalabilità dei dati principali. A quel punto considereresti il ​​passaggio a SQLite.

Il punto è che i Core Data sono così facili da usare e quindi superiori alle presunte alternative di minor peso, perché non dovresti usarlo?

+0

Buon punto Jeremy. –