Per inciso, noterò che si tratta di una percezione errata comune, ma Core Data non è un sistema di database.
Invece, è un sistema di gestione del grafico a oggetti di runtime con persistente aggiunto come opzione se lo si desidera. La sua funzione principale è fornire il livello del modello del modello di progettazione Model-View-Controller. In quanto tale, si occupa molto di più della semplice ricezione e rimozione di dati da un disco.
Core Data ha una curva di apprendimento, ma nella mia esperienza l'ostacolo più grande che molti devono affrontare è cercare di trattare Core Data come una sorta di wrapper orientato agli oggetti attorno a SQL. Da quel punto di vista Core Data è molto confusa perché sembra richiedere di imparare così tanto che non ha nulla a che fare con la persistenza.
L'uso di database come SQLite, MongoDB e CouchDB per la persistenza non velocizzerà affatto le cose perché, sebbene potresti capire meglio come ottengono i dati dentro e fuori dal disco, non aiutano affatto nella gestione dei dati e della relazione agli altri oggetti dati e agli oggetti dell'interfaccia utente. Devi ancora avere un modello di dati e dovrai codificare tutto a mano. A meno che il tuo modello di dati non sia estremamente semplice, ci vorrà più tempo rispetto all'apprendimento dei Core Data.
Il modo migliore per apprendere i Core Data è ignorare il fatto che il grafico dell'oggetto può essere persistente. Inizia dalla prospettiva che hai molti oggetti che rappresentano il modello di dati della tua app e devi gestirne gli attributi e le relazioni.