Core Data (CRUD) med Swift 4.2 för nybörjare

Core Data är ett objektgraf och uthållighetsram som tillhandahålls av Apple i operativsystemen macOS och iOS. Det introducerades i Mac OS X 10.4 Tiger och iOS med iPhone SDK 3.0. Det gör att data som organiseras av Relations entity–attributmodellen kan serialiseras till XML -, binär-eller SQLite-butiker.

utvecklare som är nya för kärndata förväxlas ofta av skillnaderna mellan SQLite och kärndata. Om du undrar om du behöver SQLite-eller kärndata, frågar du fel fråga. Kom ihåg att kärndata inte är en databas.

SQLite:

  • har databegränsningar funktion.
  • fungerar på data, lagrad på disk.
  • kan släppa tabell och redigera data utan att ladda dem i minnet.
  • långsam jämfört med kärndata.

kärndata:

  • har inte databegränsningar, om det behövs måste implementeras av affärslogik.
  • fungerar i minnet.(data måste laddas från disk till minne)
  • behöver ladda hela data om vi behöver släppa tabell eller uppdatera.
  • snabbt när det gäller rekordskapande.(spara dem kan vara tidskrävande)

dessutom bortsett från SQLite som back-end kärndata kan använda XML eller binärt format för att lagra data till disk.

Kärndatabegränsningar

även om kärndata är en fantastisk ram, Finns det flera nackdelar. Dessa nackdelar är direkt relaterade till ramens karaktär och hur det fungerar.

kärndata kan bara göra sin magi eftersom den håller objektgrafen som den hanterar i minnet. Det betyder att det bara kan fungera på poster när de är i minnet. Detta skiljer sig mycket från att utföra en SQL-fråga i en databas. Om du vill ta bort tusentals poster måste Core Data först ladda varje post i minnet. Det säger sig självt att detta resulterar i minnes-och prestandaproblem om det görs felaktigt.

en annan viktig begränsning är gängmodellen för kärndata. Ramverket räknar med att köras på en enda tråd. Lyckligtvis har kärndata utvecklats dramatiskt genom åren och ramverket har infört olika lösningar för att göra arbetet med kärndata i en flertrådad miljö säkrare och enklare.

för applikationer som behöver hantera ett komplext objektdiagram är kärndata en bra passform. Om du bara behöver lagra en handfull orelaterade objekt kan du vara bättre med en lätt lösning eller användarens standardsystem.

Core Data Demo (Skapa, hämta, uppdatera och ta bort)

för att visa grunderna i Core Data, låt oss skapa en enda vy iOS app med Core Data modul vald.

Skapa projekt med Använd kärndata

låt oss först skapa ett nytt projekt och låt oss välja ”Använd kärndata”. Även om du kan lägga till det ramverket för ditt befintliga projekt är det lättare att lägga till det från den platsen eftersom allt kommer att kopplas upp redan för dig.När projektet har skapats ser du en fil som CoreDataTest.xcdatamodeld tillsatt.

när du klickar på den ser du ett verktyg som låter dig konfigurera enheter som representerar datamodeller. Du kan definiera några saker för varje enhet där men för oss attribut och relationer kommer att vara viktigast.

Lägg till enhet

konfigurera Entitetsnamn och attribut

nu har vi skapat ett demoprojekt med Kärndatastöd. Det finns två anmärkningsvärda förändringar i denna Xcode-mall som vi lätt kan observera som är

  • den nya filen CoreDataCRUD.xcdatamodeld
  • den AppDelegate.swift-fil med Core Data Stack-kod

AppDelegate core Data stack

Core Data Stack

Core Data Stack koden inuti AppDelegate.swift har tydlig dokumentation i form av kommentarer men kort sagt ställer den in persistentContainer och sparar data om det finns några ändringar. Eftersom AppDelegate är den första filen som körs så snart appen lanserades kan vi spara och hämta sammanhanget från Kärndatastacken.
nu har vi modellerat våra data i Användarenheten. Det är dags att lägga till några poster och spara den i CoreData

börja med import CoreData till vår viewcontroller.swift

skapa poster till kärndata

processen att lägga till posterna till kärndata har följande uppgifter

  • se persistentContainer från appdelegate
  • skapa sammanhanget från persistentContainer
  • skapa en entitet med användaren
  • Skapa ny post med den här Användarenheten
  • ange värden för posterna för varje tangent

skapa poster genom för loop för att skapa flera testposter

hämta Data

processen att hämta sparade data är också mycket enkelt. Den har följande uppgift

  • Förbered begäran av typen NSFetchRequest för enheten (användaren i vårt exempel)
  • om det behövs använd predikat för filterdata
  • hämta resultatet från kontext i form av array av
  • iterera genom en array för att få värde för den specifika nyckeln

vi kan hämta data från våra användare enhet med följande kod.

uppdatera Data

för uppdateringspost först måste vi hämta/hämta data med predikat som samma som ovan Hämta dataprocessen. Sedan under några steg för att följa

  • förbereda begäran med predikat för entiteten (användaren i vårt exempel)
  • hämta post och ange Nytt värde med nyckel
  • och senast spara sammanhang samma som skapa data.

här i ovanstående exempel ersätt ”Ankur1” med ”newName”

ta bort Data

för Radera post först måste vi hitta objekt som vi vill ta bort genom fetchRequest. följ sedan nedan några steg för Radera post

  • Förbered begäran med predikat för enheten (användaren i vårt exempel)
  • hämta post och som vi vill ta bort
  • och skapa sammanhang.radera (objekt) samtal (ref bild bifogad nedan)

i den här metoden hämtar vi post med användarnamn är ”Ankur3” och tar bort den posten och sparar den.

Tja, det här räcker inte för kärndata, det finns många komplexa saker vi kan göra med kärndataspårningsdataändringar, lägga till predikat och komplexa databasförhållanden. När du använder mer kärndata blir saker mer komplexa.