Core Data (CRUD) cu Swift 4.2 pentru începători
Core Data este un grafic de obiecte și un cadru de persistență furnizat de Apple în sistemele de operare macOS și iOS. Acesta a fost introdus în Mac OS X 10.4 Tiger și iOS cu iPhone SDK 3.0. Permite ca datele organizate de modelul relațional entitate–atribut să fie serializate în XML, binar sau SQLite magazine.
dezvoltatorii noi la datele de bază sunt adesea confundate de diferențele dintre SQLite și datele de bază. Dacă vă întrebați dacă aveți nevoie de date SQLite sau Core, atunci puneți întrebarea greșită. Amintiți-vă că datele de bază nu sunt o bază de date.
SQLite:
- au caracteristică constrângeri de date.
- funcționează pe date, stocate pe disc.
- poate picătură de masă și edita date fără a le încărca în memorie.
- lent în comparație cu datele de bază.
date de bază:
- nu aveți constrângeri de date, dacă este necesar, trebuie să implementați prin logica de afaceri.
- funcționează în memorie.(datele trebuie încărcate de pe disc în memorie)
- trebuie să încărcăm date întregi dacă trebuie să renunțăm la tabel sau să actualizăm.
- rapid în ceea ce privește crearea de înregistrări.(salvarea lor poate fi consumatoare de timp)
în plus, în afară de SQLite ca date de bază back-end pot utiliza XML sau format binar pentru stocarea datelor pe disc.
limitări de date de bază
chiar dacă datele de bază este un cadru fantastic, există mai multe dezavantaje. Aceste dezavantaje sunt direct legate de natura cadrului și de modul în care acesta funcționează.
datele de bază își pot face magia doar pentru că păstrează graficul obiect pe care îl gestionează în memorie. Aceasta înseamnă că poate funcționa numai pe înregistrări odată ce acestea sunt în memorie. Acest lucru este foarte diferit de efectuarea unei interogări SQL pe o bază de date. Dacă doriți să ștergeți mii de înregistrări, datele de bază trebuie mai întâi să încarce fiecare înregistrare în memorie. Este de la sine înțeles că acest lucru duce la probleme de memorie și performanță dacă este făcut incorect.
o altă limitare importantă este modelul de filetare a datelor de bază. Cadrul se așteaptă să fie rulat pe un singur fir. Din fericire, datele de bază au evoluat dramatic de-a lungul anilor, iar cadrul a pus în aplicare diverse soluții pentru a face lucrul cu datele de bază într-un mediu cu mai multe fire mai sigur și mai ușor.
pentru aplicațiile care au nevoie pentru a gestiona un grafic obiect complex, datele de bază este o potrivire mare. Dacă trebuie doar să stocați o mână de obiecte fără legătură, atunci este posibil să fiți mai bine cu o soluție ușoară sau cu sistemul implicit al utilizatorului.
Core Data Demo (crea, prelua, actualiza și șterge)
în scopul de a demonstra elementele de bază ale datelor de bază, să creeze o singură vizualizare iOS app cu modulul de date de bază selectat.
mai întâi, să creăm un nou proiect și să selectăm „utilizați datele de bază”. Deși puteți adăuga acel cadru pentru proiectul dvs. existent, este mai ușor să îl adăugați din acel loc, deoarece totul va fi conectat deja pentru dvs.Odată ce proiectul este creat, veți vedea un fișier precum CoreDataTest.xcdatamodeld adăugat.
când faceți clic pe acesta, veți vedea un instrument care vă permite să configurați entități care reprezintă modele de date. Puteți defini câteva lucruri pentru fiecare entitate acolo, dar pentru noi atributele și relațiile vor fi cele mai importante.
acum, că, am creat un proiect demo cu suport de date de bază. Există două modificări notabile în acest șablon Xcode putem observa cu ușurință care sunt
- noul fișier CoreDataCRUD.xcdatamodeld
- AppDelegate.fișier swift cu cod de bază al stivei de date
Core Data Stack
Codul Core Data Stack din interiorul AppDelegate.swift are o documentație clară sub formă de comentarii, dar pe scurt, a configurat persistentContainer și a salva datele dacă există modificări. Ca AppDelegate este primul fișier care execută de îndată ce App lansat, putem salva și prelua contextul din stiva de date de bază.
acum, am modelat datele noastre în entitatea utilizator. Este timpul pentru a adăuga unele înregistrări și salvați-l în CoreData
începeți cu CoreData import la viewcontroller nostru.swift
creați înregistrări la datele de bază
procesul de adăugare a înregistrărilor la datele de bază are următoarele sarcini
- consultați persistentContainer din appdelegate
- creați contextul din persistentContainer
- creați o entitate cu utilizatorul
- creați o nouă înregistrare cu această entitate utilizator
- setați valori pentru înregistrările pentru fiecare cheie
preluare date
procesul de preluarea datelor salvate este foarte ușor, de asemenea. Are următoarea sarcină
- pregătiți cererea de tip NSFetchRequest pentru entitate (utilizatorul din exemplul nostru)
- dacă este necesar, folosiți predicat pentru date de filtrare
- preluați rezultatul din context sub forma matricei de
- iterați printr-o matrice pentru a obține valoare pentru cheia specifică
putem prelua rezultatul din context sub forma matricei de
date de la entitatea noastră de utilizatori folosind următorul cod.
actualizați datele
pentru înregistrarea actualizării mai întâi trebuie să preluăm/să preluăm date cu predicat la fel ca mai sus preluați procesul de date. Apoi, mai jos câțiva pași de urmat
- pregătiți solicitarea cu predicat pentru entitate (utilizator în exemplul nostru)
- Fetch record și setați o nouă valoare cu tasta
- și ultima salvare context la fel ca creare date.
ștergeți datele
pentru ștergerea înregistrării mai întâi trebuie să găsim obiectul pe care dorim să îl ștergem prin fetchRequest. apoi urmați mai jos câțiva pași pentru ștergere înregistrare
- pregătiți solicitarea cu predicat pentru entitate (utilizator în exemplul nostru)
- preluare înregistrare și pe care dorim să o ștergem
- și să facem context.ștergeți apelul (obiect) (imaginea ref atașată mai jos)
Ei bine, acest lucru nu este suficient pentru datele de bază, există multe lucruri complexe pe care le putem face cu datele de bază care urmăresc modificările datelor, adăugând predicate și relații complexe ale bazelor de date. Pe măsură ce utilizați mai multe date de bază, lucrurile devin mai complexe.