Felicitări pentru acest lucru! Până acum ați creat deja o aplicație simplă pentru utilizatorii să transfere restaurantele lor preferate. Dacă ați lucrat la exercițiul anterior, trebuie să înțeleagă elementele de bază ale modului de a adăuga un restaurant. Am încercat să simplifice procesul și să se concentreze pe elementele de bază UItableView. Până în acest moment, toate restaurantele au fost prestabilite în codul sursă și stocate în matrice. Dacă doriți să salvați restaurant, cel mai simplu mod este de a adăuga un nou restaurant la gama existentă de restaurante.
Cu toate acestea, dacă o lași, atunci nu se poate salva un nou restaurant. Date de retenție în memorie (de exemplu, matrice) nu este stabilă. După ce ieși din aplicație, toate modificările vor dispărea. Trebuie să găsim o modalitate de a stoca date într-o formă permanentă.
Pentru a salva datele în formă permanentă, va trebui să le salvați într-un depozit permanent sau bază de date. De exemplu, stocarea datelor în baza de date, datele vor fi în siguranță, chiar dacă cererea se închide sau nu. Fișiere - este un alt mod de a salva datele, dar acestea sunt mai potrivite pentru stocarea cantități mici de date care necesită modificări frecvente. De exemplu, fișierele sunt utilizate în mod obișnuit pentru a stoca setările aplicației. Dacă deschideți dosarul fișierelor de suport în navigatorul de proiect, atunci veți găsi fișierul Info.plist. Acest fișier de proprietăți este utilizat pentru setările de proiect magazin.
cerere FoodPin poate fi necesar pentru a stoca mii de înregistrări restaurante. Utilizatorii pot, de asemenea, de multe ori adăuga sau elimina înregistrărilor de date restaurante. În acest caz, baza de date - acesta este modul corect de a gestiona un set mare de date. În acest capitol, vă voi spune despre structura de bază de date și arată cum să-l folosească pentru a gestiona datele din baza de date. Ai face o mulțime de modificări la un proiect existent, dar după trecerea acestui capitol, aplicația va permite utilizatorilor să salveze restaurantele lor preferate.
Ce este Core Data?
Când vorbim despre date persistente, probabil credeți că a bazelor de date. Dacă sunteți familiarizat cu Oracle sau MySQL, atunci știți că datele stochează o bază de date relațională în tabele, rânduri și coloane. Cererea dvs. accesează baza de date folosind SQL (Structured Query Language) interogare. Cu toate acestea, nu se confunda datele de bază cu bazele de date. Deși SQLite baza de date este un depozit permanent implicit pentru date de bază în iOS. Core Data nu este chiar o bază de date relațională - de fapt, este o platformă care permite dezvoltatorilor să interacționeze cu baza de date (sau altui dispozitiv de stocare permanentă) mod orientat pe obiect.
Ia aplicarea FoodPin ca exemplu. Dacă doriți să salvați datele în baza de date, atunci sunteți responsabil pentru scrierea de cod pentru a se conecta la baza de date și de a prelua sau actualizare a datelor folosind SQL. Ar fi dificil pentru dezvoltatori, mai ales pentru cei care nu știu SQL.
Core Data oferă o modalitate simplă de a salva datele din magazin persistente la alegere. Puteți compara obiectele din aplicațiile cu un tabel în baza de date. Pur și simplu pune, vă permite să gestionați înregistrările (selectați / inserare / modificare / ștergere) în baza de date, fără să știe SQL.
Core Data stivă
Înainte de a începe lucrul la proiect, aveți nevoie pentru a obține mai întâi o înțelegere de bază de date Core stivă. Uită-te la poza.
Se pare dificil, nu? Cu siguranță. Prin urmare, IOS 10 introduce o nouă clasă de NSPersistentContainer. care simplifică gestionarea unui teanc de date de bază în aplicațiile dumneavoastră. NSPersistentContainer - clasa, cu care vi se va face pentru stocarea și regăsirea datelor. Confuz? Nu-ți face griji. Vei înțelege ce vreau să spun, atunci când vom converti aplicație FoodPin din matrice în bază de date.
Folosind modelul de bază de date
Cel mai simplu mod de a utiliza Core Data - includ opțiunea de bază de date la crearea proiectului. Xcode va genera codul necesar în AppDelegate.swift și de a crea modelul de date pentru acest lucru.
Dacă creați proiect CoreDataDemo cu opțiunea de bază de date, veți vedea următoarele variabile și metoda generate în AppDelegate clasă:
Codul generat furnizează variabilele și metodele:
- Variabila este un exemplu de persistentContainer NSPersistentContainer și depozit permanent inițializate numit CoreDataDemo. Mai târziu, veți utiliza această variabilă pentru a interacționa cu stiva Core Data.
- saveContext () metoda furnizează o stocare a datelor. Când trebuie să inserați / modificare / ștergere a datelor în magazin persistente, suna această metodă.
Dacă utilizați Core Data în versiunea veche a Xcode, ar trebui să găsiți că codul generat a fost mult simplificată. NSPersistentContainer încapsulează stiva de bază de date și ușor de utilizat datele de bază.
Întrebarea este, cum putem folosi acest cod șablon în nostru Xcode proiect existent. Putem pur și simplu copiați și inserați codul în AppDelegate.swift proiectul dumneavoastră, dar va trebui să facă modificări minore.
șablon de cod sursă a fost creat pentru proiectul CoreDataDemo. Xcode solicită numele de fișier SQLite și modelul de date folosind numele proiectului. Pentru proiectul FoodPin CoreDataDemo în loc de a scrie numele FoodPin dumneavoastră. Prin urmare, modificați următoarea linie de cod la următoarele:
În cele din urmă, se adaugă declarația de import la începutul clasei AppDelegate. să-l importa. cadru de date de bază:
Notă: Pentru referință, puteți descărca, de asemenea, șablonul de proiect. pentru a continua.