Core Data (CRUD) med hurtig 4.2 for begyndere
Core Data er et objekt graf og persistens rammer, som Apple i MacOS og iOS operativsystemer. Det blev introduceret i Mac OS 10.4 Tiger og iOS med iPhone SDK 3.0. Det gør det muligt at serialisere data, der er organiseret af den relationelle enheds–attributmodel, i butikker.
udviklere, der er nye inden for kernedata, forveksles ofte af forskellene mellem kV og kernedata. Hvis du spekulerer på, om du har brug for CVR-eller kernedata, så stiller du det forkerte spørgsmål. Husk, at kernedata ikke er en database.
:
- har Data begrænsninger funktion.
- fungerer på data, gemt på disken.
- kan slippe tabel og redigere data uden at indlæse dem i hukommelsen.
- langsom sammenlignet med kernedata.
kernedata:
- har ikke databegrænsninger, hvis det kræves, skal implementeres af forretningslogik.
- fungerer i hukommelsen.(data skal indlæses fra disk til hukommelse)
- har brug for at indlæse hele data, hvis vi har brug for at droppe tabellen eller opdatere.
- hurtig med hensyn til oprettelse af poster.(gemme dem kan være tidskrævende)
som back-end kernedata kan du også bruge binært format til lagring af data på disken.
Kernedatabegrænsninger
selvom kernedata er en fantastisk ramme, er der flere ulemper. Disse ulemper er direkte relateret til rammens art og hvordan det virker.
kernedata kan kun gøre sin magi, fordi den holder objektgrafen, den administrerer, i hukommelsen. Det betyder, at det kun kan fungere på poster, når de er i hukommelsen. Dette er meget forskelligt fra at udføre en forespørgsel på en database. Hvis du vil slette tusindvis af poster, skal kernedata først indlæse hver post i hukommelsen. Det siger sig selv, at dette resulterer i problemer med hukommelse og ydeevne, hvis det gøres forkert.
en anden vigtig begrænsning er gevindmodellen for kernedata. Rammen forventer at blive kørt på en enkelt tråd. Heldigvis har kernedata udviklet sig dramatisk gennem årene, og rammen har indført forskellige løsninger for at gøre arbejdet med kernedata i et flertrådet miljø sikrere og lettere.
for applikationer, der har brug for at styre en kompleks objektgraf, er kernedata en god pasform. Hvis du kun har brug for at gemme en håndfuld ikke-relaterede objekter, kan du have det bedre med en letvægtsløsning eller brugerens standardsystem.
Core Data Demo (Opret, Hent, Opdater og Slet)
for at demonstrere grundlæggende i Kernedataene, lad os oprette en enkelt visning iOS-app med valgt Kernedatamodul.
lad os først oprette et nyt projekt og lad os vælge “Brug kernedata”. Selvom du kan tilføje denne ramme til dit eksisterende projekt, er det lettere at tilføje det fra det sted, da alt allerede er tilsluttet for dig.Når projektet er oprettet, vil du se en fil som CoreDataTest.tilføjet.
når du klikker på det, vil du se et værktøj, der giver dig mulighed for at konfigurere enheder, der repræsenterer datamodeller. Du kan definere få ting for hver enhed der, men for os vil attributter og relationer være vigtigst.
nu har vi oprettet et demoprojekt med Core Data support. Der er to bemærkelsesværdige ændringer i denne kodeskabelon, som vi nemt kan observere, som er
- den nye fil CoreDataCRUD.
- den AppDelegate.hurtig fil med Core Data Stack kode
Core Data Stack
kernen data Stack kode inde i AppDelegate.Hurtig har klar dokumentation i form af kommentarer, men kort sagt opretter den persistentContainer og gemmer dataene, hvis der er ændringer. Da AppDelegate er den første fil, der udføres, så snart appen blev lanceret, kan vi gemme og hente konteksten fra Kernedatastakken.
nu har vi modelleret vores data i brugerenheden. Det er tid til at tilføje nogle poster og gemme det i CoreData
Start med import CoreData til vores visningskontroller.hurtig
Opret poster til kernedata
processen med at tilføje posterne til kernedata har følgende opgaver
- henvis til persistentContainer fra appdelegate
- Opret konteksten fra persistentContainer
- Opret en enhed med bruger
- Opret ny post med denne brugerenhed
- Indstil værdier for posterne for hver nøgle
Hent Data
processen at hente de gemte data er også meget let. Det har følgende opgave
- Forbered anmodningen om type Nsfetchanmodning for enheden (bruger i vores eksempel)
- brug om nødvendigt prædikat til filterdata
- Hent resultatet fra kontekst i form af array af
- iterere gennem et array for at få værdi for den specifikke nøgle
vi kan hent data fra vores brugere enhed ved hjælp af følgende kode.
Opdater Data
til opdateringspost først skal vi hente/hente data med prædikat som det samme som ovenfor hente dataprocessen. Så nedenfor få trin for at følge
- Forbered anmodningen med prædikat for enheden (bruger i vores eksempel)
- Hent post og indstil ny værdi med nøgle
- og sidste Gem kontekst samme som Opret data.
Slet Data
for Slet post først skal vi finde objekt, som vi vil slette ved henteanmodning. følg derefter nedenstående få trin for Slet post
- Forbered anmodningen med prædikat for enheden (bruger i vores eksempel)
- Hent post, og som vi vil slette
- og lav kontekst.slet (objekt) opkald (ref billede vedhæftet nedenfor)
nå, dette er ikke nok til kernedata, der er mange komplekse ting, vi kan gøre med core data tracking Data ændringer, tilføje prædikater og komplekse relationer af databaser. Når du bruger flere kernedata, bliver tingene mere komplekse.