Kjernedata (CRUD) Med Swift 4.2 For Nybegynnere
Kjernedata er et objektgraf og vedvarende rammeverk levert Av Apple i macOS og iOS-operativsystemene. Det ble introdusert I Mac OS X 10.4 Tiger og iOS med iPhone SDK 3.0. Det gjør at data organisert av relasjonsenhet-attributt modell for å bli serialisert I XML, binær, eller SQLite butikker.
Utviklere nye Til Kjernedata er ofte forvirret av forskjellene Mellom Sqlite Og Kjernedata. Hvis du lurer på om Du trenger Sqlite Eller Kjernedata, spør du feil spørsmål. Husk At Kjernedata ikke er en database.
SQLite:
- Har Databegrensninger funksjonen.
- Opererer på data, lagret på disk.
- Kan Slippe tabell og Redigere data uten å laste dem i minnet.
- Sakte sammenlignet med kjernedata.
Kjernedata:
- Har Ikke Databegrensninger, hvis det er nødvendig, må implementeres av forretningslogikk.
- Opererer på i minnet.(data må lastes fra disk til minne)
- må laste hele data hvis vi trenger å slippe tabell eller oppdatere.
- Rask når det gjelder rekordopprettelse.(lagre dem kan være tidkrevende)
I tillegg bortsett Fra SQLite som back-end Kjerne data kan bruke XML eller binært format for lagring av data til disk.
Kjernedatabegrensninger
Selv Om Kjernedata er et fantastisk rammeverk, er det flere ulemper. Disse ulempene er direkte relatert til rammens natur og hvordan det fungerer.
Kjernedata kan bare gjøre sin magi fordi den holder objektgrafen den styrer i minnet. Dette betyr at den bare kan fungere på poster når de er i minnet. Dette er svært forskjellig fra å utføre EN SQL-spørring på en database. Hvis du vil slette tusenvis av poster, Må Kjernedata først laste hver post inn i minnet. Det sier seg selv at dette resulterer i minne og ytelsesproblemer hvis det gjøres feil.
En annen viktig begrensning er gjengemodellen Av Kjernedata. Rammeverket forventer å bli kjørt på en enkelt tråd. Heldigvis Har Kjernedata utviklet seg dramatisk gjennom årene, og rammeverket har satt ulike løsninger på plass for å gjøre arbeidet med Kjernedata i et flertrådet miljø tryggere og enklere.
For applikasjoner som trenger å håndtere en kompleks objektgraf, Er Kjernedata en god passform. Hvis du bare trenger å lagre en håndfull urelaterte objekter, kan du være bedre med en lettvektsløsning eller brukerens standardsystem.
Core Data Demo(Opprett, Hent, Oppdater og Slett)
for å demonstrere grunnleggende Om Kjernedataene, la oss lage enkeltvisning iOS-app med Core data module valgt.
Først, la oss opprette et nytt prosjekt og la oss velge «Bruk Kjernedata». Selv om du kan legge til det rammeverket for ditt eksisterende prosjekt, er det enklere å legge det fra det stedet, da alt blir koblet opp allerede for deg.Når prosjektet er opprettet, vil du se en fil som CoreDataTest.xcdatamodeld lagt til.
når du klikker på det, vil du se et verktøy som lar deg konfigurere enheter som representerer datamodeller. Du kan definere noen ting for hver enhet der, men For Oss Attributter og Relasjoner vil være viktigst.
Nå har vi laget et demoprosjekt med Kjernedatastøtte. Det er to bemerkelsesverdige endringer i Denne xcode-malen vi enkelt kan observere som er
- Den nye Filen CoreDataCRUD.xcdatamodeld
- AppDelegate.rask fil Med Kjerne Data Stack kode
Kjernedatastakk
Kjernedatastakkoden inne I AppDelegate.swift har klar dokumentasjon i form av kommentarer, men kort sagt, det satt opp persistentContainer og lagre data hvis det er noen endringer. Som AppDelegate Er Den første filen som utfører så snart app lansert, kan vi lagre og hente konteksten fra Kjernedatastakken.
Nå har vi modellert dataene våre i Brukerenheten. Det er på tide å legge til noen poster Og lagre Det I CoreData
Start med import CoreData til vår viewcontroller.swift
Opprett Poster Til Kjernedata
prosessen med å legge til postene I Kjernedata har følgende oppgaver
- Se persistentContainer fra appdelegate
- Opprett kontekst fra persistentContainer
- Opprett en enhet Med Bruker
- Opprett ny post Med Denne Brukerenheten
- angi verdier for postene For Hver Nøkkel
Hent Data
prosessen å hente de lagrede dataene er også veldig enkelt. Den har følgende oppgave
- Forbered forespørselen av typen NSFetchRequest for enheten (Bruker i vårt eksempel)
- om nødvendig bruk predikat for filterdata
- Hent resultatet fra kontekst i form av matrise
- Iterere gjennom en matrise for å få verdi for den spesifikke nøkkelen
vi kan hente data fra våre brukere enhet ved hjelp av følgende kode.
Oppdater Data
for oppdateringspost må vi først hente / Hente data med predikat som samme Som Ovenfor Hente dataprosess. Deretter under noen få trinn for å følge
- Forbered forespørselen med predikat for enheten (Bruker i vårt eksempel)
- Hent post og Sett Ny verdi med nøkkel
- Og Siste Lagre kontekst samme som opprett data.
Slett Data
for slett post først må vi finne objekt som vi vil slette ved fetchRequest. følg deretter noen få trinn for slett post
- Forbered forespørselen med predikat for enheten(Bruker i vårt eksempel)
- Hent post og som vi vil slette
- Og gjør kontekst.slett (objekt) samtale (ref bilde vedlagt nedenfor)
vel, dette er ikke nok til kjernedata, det er mange komplekse ting vi kan gjøre med kjernedatasporingsdataendringer, legge Til Predikater og komplekse relasjoner i databaser. Når Du bruker Mer Kjernedata, blir ting mer komplekse.