Core Data (CRUD) con Swift 4.2 per principianti

Core Data è un framework per il grafico degli oggetti e la persistenza fornito da Apple nei sistemi operativi macOS e iOS. È stato introdotto in Mac OS X 10.4 Tiger e iOS con iPhone SDK 3.0. Consente di serializzare i dati organizzati dal modello di attributo entità relazionale in archivi XML, binari o SQLite.

Gli sviluppatori nuovi a Core Data sono spesso confusi dalle differenze tra SQLite e Core Data. Se ti chiedi se hai bisogno di dati SQLite o Core, allora stai facendo la domanda sbagliata. Ricorda che i dati principali non sono un database.

SQLite:

  • Dispone di funzionalità di vincoli di dati.
  • Funziona su dati, memorizzati su disco.
  • Può eliminare la tabella e modificare i dati senza caricarli in memoria.
  • Lento rispetto ai dati principali.

Dati principali:

  • Non hanno vincoli di dati, se necessario, devono essere implementati dalla logica di business.
  • Funziona in memoria.(i dati devono essere caricati dal disco alla memoria)
  • È necessario caricare interi dati se è necessario eliminare la tabella o l’aggiornamento.
  • Veloce in termini di creazione di record.(salvarli potrebbe richiedere molto tempo)

Inoltre, a parte SQLite, i dati core di back-end possono utilizzare il formato XML o binario per la memorizzazione dei dati su disco.

Limitazioni dei dati di base

Anche se i dati di base sono un framework fantastico, ci sono diversi inconvenienti. Questi inconvenienti sono direttamente correlati alla natura del framework e al suo funzionamento.

Core Data può solo fare la sua magia perché mantiene il grafico dell’oggetto che gestisce in memoria. Ciò significa che può funzionare solo sui record una volta che sono in memoria. Questo è molto diverso dall’esecuzione di una query SQL su un database. Se si desidera eliminare migliaia di record, Core Data deve prima caricare ogni record in memoria. Va da sé che ciò si traduce in problemi di memoria e prestazioni se fatto in modo errato.

Un’altra importante limitazione è il modello di threading dei dati principali. Il framework prevede di essere eseguito su un singolo thread. Fortunatamente, i dati di base si sono evoluti drammaticamente nel corso degli anni e il framework ha messo in atto varie soluzioni per rendere il lavoro con i dati di base in un ambiente multithread più sicuro e più facile.

Per le applicazioni che hanno bisogno di gestire un grafico oggetto complesso, Core Data è una grande misura. Se hai solo bisogno di memorizzare una manciata di oggetti non correlati, allora potresti stare meglio con una soluzione leggera o il sistema predefinito dell’utente.

Core Data Demo (Creare, recuperare, aggiornare ed eliminare)

Al fine di dimostrare le basi dei dati di base, creiamo singola vista iOS app con Core Data module selezionato.

Crea progetto con Use Core Data

Per prima cosa, creiamo un nuovo progetto e selezioniamo “Use Core Data”. Sebbene tu possa aggiungere quel framework per il tuo progetto esistente, è più facile aggiungerlo da quel posto poiché tutto sarà già cablato per te.Una volta creato il progetto, vedrai un file come CoreDataTest.xcdatamodeld aggiunto.

Quando lo fai clic, vedrai uno strumento che ti consente di configurare entità che rappresentano modelli di dati. È possibile definire alcune cose per ogni entità lì, ma per noi gli attributi e le relazioni saranno più importanti.

Aggiungi Entità

Configurare un Nome di Entità e Attributi

Ora che abbiamo creato un progetto dimostrativo con un Nucleo di supporto di Dati. Ci sono due cambiamenti notevoli in questo modello Xcode che possiamo facilmente osservare che sono

  • Il nuovo file CoreDataCRUD.xcdatamodeld
  • L’AppDelegate.file swift con codice stack di dati di base

AppDelegate core data stack

Core Data Stack

Il codice Core Data Stack all’interno di AppDelegate.swift ha una documentazione chiara sotto forma di commenti, ma in breve, imposta persistentContainer e salva i dati in caso di modifiche. Poiché AppDelegate è il primo file che viene eseguito non appena l’app viene avviata, possiamo salvare e recuperare il contesto dallo stack di dati principale.
Ora che, abbiamo modellato i nostri dati nell’entità utente. È ora di aggiungere alcuni record e salvarlo in CoreData

Inizia con l’importazione di CoreData nel nostro viewcontroller.swift

Creare un Record di Dati di base

Il processo di aggiunta di record di Dati di base ha i seguenti compiti

  • Consultare persistentContainer da appdelegate
  • Creare il contesto da persistentContainer
  • Creare un’entità con l’Utente
  • Crea nuovo record con questa Entità Utente
  • Impostare i valori per i record per ogni chiave

creare un record tramite ciclo for per creare più registrazioni di test

Recuperare i Dati

Il processo anche il recupero dei dati salvati è molto semplice. Esso ha il compito di

  • Preparare la richiesta di tipo NSFetchRequest per l’entità Utente (nel nostro esempio)
  • se necessario, utilizzare predicato per filtrare i dati
  • Recuperare il risultato dal contesto in forma di array di
  • Scorrere un array di ottenere il valore per la chiave specifica

Siamo in grado di recuperare i dati dai nostri Utenti entità utilizzando il seguente codice.

Aggiornare i dati

Per aggiornare il record prima dobbiamo recuperare / Recuperare i dati con predicato come come sopra Recuperare il processo di dati. Quindi di seguito alcuni passaggi da seguire

  • Prepara la richiesta con predicato per l’entità (Utente nel nostro esempio)
  • Recupera record e Imposta Nuovo valore con chiave
  • E Ultimo contesto di salvataggio come creare dati.

qui nell’esempio sopra sostituire “Ankur1” con “newName”

Eliminare i Dati

Per cancellare la registrazione prima di tutto dobbiamo trovare l’oggetto che si desidera eliminare dal fetchRequest. quindi segui di seguito alcuni passaggi per delete record

  • Prepara la richiesta con predicato per l’entità (Utente nel nostro esempio)
  • Fetch record e che vogliamo eliminare
  • E rendere context.delete (object) call (ref immagine allegata qui sotto)

in questo metodo recuperiamo il record con il nome utente “Ankur3” ed eliminiamo quel record e lo salviamo.

Bene, questo non è sufficiente per i dati di base, ci sono molte cose complesse che possiamo fare con i dati di base che monitorano le modifiche dei dati, aggiungendo predicati e relazioni complesse di database. Man mano che usi più dati di base, le cose diventano più complesse.