Få en grunnleggende forståelse av iOS Core Data

Det er flere alternativer når det gjelder bruk av vedvarende data på iOS-enheter. Det er viktig å forstå fordelene med hver tilnærming før du bestemmer hvilken taktikk du skal ta i bruk. Hvis en liten mengde informasjon - for eksempel bruker- og applikasjonsinnstillinger - er alt som trenger å vedvare mellom lanseringene, er NSUserDefaults-klassen et godt valg. Nøkkelverdipar, ordbøker og matriser kan alle lagres som brukerapplikasjonsinnstillinger ved å bruke NSUserDefaults-klassen. Å bruke en egenskapsliste (.plist) -tilnærming er også et mulig alternativ for å lagre små datamengder ved hjelp av en ordbok eller matrise. Klassene NSDictionary og NSArray støtter lesing fra og skriving til en eiendomslistefil. Hvis appen krever mer omfattende data som skal lagres og hentes med jevne mellomrom - som kontakter, oppskrifter, handlelister, etc. - vil Core Data-rammeverket måtte brukes.

Bruke kjernedata

En av de kraftigste funksjonene på iOS-plattformen er enkelt å integrere databasefunksjoner i en app. Mange iOS-apper bruker den innebygde SQLite databasemotoren for offentlig domene - sammen med Core Data-rammeverket - for å vedvare informasjonen i iOS-appene sine. Bruke Core Data eliminerer praktisk talt behovet for å jobbe direkte med databasen, og isolerer derfor utvikleren fra å skrive transaksjonssQL-setninger for å manipulere dataene. En iOS-app vil vanligvis trenge å samhandle med bare noen få klasser. NSManagedObject-klassen representerer elementer som blir lagret. Tenk på et administrert objekt som en enkelt post i en tabell. NSManagedObjectContext-klassen representerer en samling av administrerte objekter. Kontekstklassen for det administrerte objektet håndterer å lage, jobbe med og lagre administrerte objekter.

Core Data-administrerte objekter er definert i en styrt objektmodell. NSManagedObjectModel består av enheter, attributter, valideringer og relasjoner. Selv om det høres komplisert ut, er det egentlig ganske enkelt. For å legge til Core Data-funksjoner i en iOS-app, må du inkludere rammeverket ( figur A ). Når Core Data-rammeverket er lagt til, må du legge til en Core Data-modellfil. Lag en ny fil som skal legges til prosjektet ditt ved å velge Fil >> Ny fra menyen, eller ved å høyreklikke på prosjektet i navigasjonsruten og velge 'Ny fil'. Velg datamodellmalen og navngi filen ( figur B ).

Figur A

Figur B

Når den er opprettet, vises datamodellfilen i navigasjonsruten til prosjektet. Dobbeltklikk på datamodellen (.xcdatamodeld) -filen for å åpne redigeringsvinduet ( figur C ).

Figur C

Datamodelleditoren lar deg legge til enheter, attributter og konfigurere forhold blant annet. Tenk på enheter som tabeller og attributter som felt i disse tabellene. Velg 'Legg til enhet' nederst i datamodellredigeringsvinduet. Et nytt enhetsobjekt skal vises under listen over enheter ( figur D ).

Figur D

Gi enheten et navn som best representerer samlingen av data som vil bli fanget og lagret. Hvis du for eksempel utviklet en iOS-app for lagring av informasjon om forskjellige viner i samlingen din, kan du kalle enheten 'Viner'.

Når enheten er valgt, kan du legge til en attributt for å lagre hver spesifikk informasjon som skal være inne i enheten. Med andre ord, hvis vi lagrer informasjon om våre favorittviner, kan det hende vi må lage attributter for å representere navnet på vin, årgang, type, antall flasker for hånden og en poengsum eller vurdering. Legg til attributter ved å klikke 'Legg til attributt' nederst i datamodellredigeringsvinduet. Hver attributt må tilordnes en av de følgende kjernedatastøttede typene ( tabell A ).

Tabell A

Datatyper

Mål-C-lagring

Heltall 16 NSNumber
Heltall 32 NSNumber
Heltall 64 NSNumber
Desimal NSNumber
Dobbelt NSNumber
Flyte NSNumber
string NSString
boolean NSNumber
Dato NSDate
Binære data NSData
transform Brukerdefinert

Avhengig av kompleksiteten til informasjon som er lagret, kan det være nødvendig å opprette flere enheter med definerte forhold. Fra en databaseprogrammerers perspektiv er denne tilnærmingen kjent som normalisering. Normalisering hjelper med ytelse når du søker, filtrerer og sorterer store datasett.

Behandlede objekter kan betraktes som ordbøker med et kjent sett med nøkler. Attributter for administrerte objekter kan nås med metoden valueForKey accessor. Ved hjelp av vinlisteeksemplet kan vi få tilgang til individuelle attributter fra Wine-enheten som følger:

 NSString * wineName = {myWine valueForKey: @ "vinName"}; 

Oppdatering av attributter kan oppnås ved å bruke setValue: forKey:

 myWine setValue: @ "Silver Oak" forKey: @ "vinName"}; 

Det er fire hovedklasser i Core Data-miljøet som brukes til å manipulere administrerte objekter. Disse klassene inkluderer: NSManagedObjectModel, NSManagedObjectContext, NSPersistentStoreCoordinator og NSPersistentStore. Klassene Managed Object Model og Managed Object Context som er nevnt tidligere, er der all interaksjon med dataene skjer. Klassene Persistent Store Coordinator og Persistent Store samhandler med selve SQLite- eller binærlagringsfilen. Det er ingen grunn til å samhandle direkte med datafilen (e).

Hvor du skal dra herfra

Det er umulig å beskrive alle funksjonene, funksjonene og bruken av kjernedata i et halvt dusin avsnitt. På typisk Apple-mote skaper imidlertid Core Data-miljøet et lag klasser mellom utvikleren og iOS. Dette tillater ikke bare rask utvikling og distribusjon, men garanterer også kompatibilitet med fremtidige utgivelser av iOS. Det er flere gode referanser og opplæringsprogrammer som hjelper deg å fordype deg i Core Data-utvikling. Apple Developer-nettstedets Core Data Basics-dokumentasjon er et flott utgangspunkt. Apple tilbyr også en Core Data Tutorial for iOS for å hjelpe utviklere i gang.

For dataene er eventyrlystne, er SQLite Manager-plugin-modulen for Firefox et flott verktøy for å hjelpe deg med å lage proof-of-concept-databaser. Mens Core Data-miljøet ikke tillater bruk av eksternt opprettede SQLite-databaser, kan du bruke mock-up-designen som en modell for å gjenskape datastrukturen i XCode-datamodelleringsgrensesnittet. Med en grunnleggende forståelse av kjernedata kan du utvikle iOS-apper som kan sammenlignes med Apples Kontakter og Notater- apper.

© Copyright 2021 | pepebotifarra.com