Table of Contents
Core Data on Applen ensisijainen kehys hallita sitkeä objektikaavio iOS-sovelluksissa. Sen sijaan, että se pakottaa kehittäjät kirjoittamaan raaka SQL tai hallitsemaan tiedostojen sarjan, Core Data tarjoaa korkean tason objektilähtöisen käyttöliittymän, joka käsittelee monimutkaisia tallennus-, muutosseuranta- ja datamallinnus. Jokaisen iOS-kehittäjän, joka työskentelee paikallisen datan kanssa, tulisi ymmärtää Core Datan ominaisuuksia ja parhaita käytäntöjä kehittää reagoivia, datarikas sovelluksia uhraamatta suorituskykyä.
Ydindataarkkitehtuurin ymmärtäminen
Core Data ei ole vain tietokanta. Se on objektin graafinen hallintajärjestelmä, joka voi jatkaa dataa levylle, mutta se myös hallinnoi muistinsisäisiä objektisuhteita, perua hallinnan ja validoinnin. Arkkitehtuuri pyörii neljän avainkomponentin ympärillä, jotka toimivat yhdessä muodostaakseen sen, mitä kutsutaan []Core Data pino[.
Ydindatapino
Jokainen Core Datan toteutus edellyttää tiettyä joukkoa kohteita, jotka on liitetty tiettyyn järjestykseen.
- Hallittu objekti Konteksti (NSManagedObjectContext):[ Naarmuuntumaton naarmuuntumaton naarmuuntuminen, jossa kehittäjät työskentelevät hallittujen esineiden kanssa. Kaikki muutokset tapahtuvat kontekstissa ennen kuin ne tallennetaan pysyvään myymälään.
- Pysyvä kauppakoordinaattori (NSPersistent StoreCoordinator):[ Toimii sillana kontekstin ja todellisen pysyvän varaston [s] välillä.
- Hallittu objektimalli (NSManagedObjectModel): Kuvaa dataskeeman kokonaisuutta, ominaisuuksia ja suhteita. Se määritellään yleensä visuaalisesti .xcdatamoded-tiedostossa.
- Pysyvä kauppa:[ Varsinainen tallennusmekanismi, joka voi olla SQLite, binary tai muistissa. SQLite on oletus tuotantosovelluksissa.
Moderni iOS-kehitys käyttää usein -luokkaa, joka luo ja määrittää automaattisesti koko pinon. Tämä poistaa kattilalevyn ja vähentää virhekonfiguroinnin mahdollisuutta.
Perustietojen asettaminen projektissa
Core Datan lisääminen iOS-projektiin edellyttää useita harkittuja vaiheita, joista jokainen rakentaa perustan tiedonhallinnalle. Prosessi alkaa luomalla datamallitiedostoa, sitten määrittelemällä kokonaisuus ja lopulta integroimalla pinon sovelluksesi elinkaareen.
Datamallin luominen
Aloita lisäämällä uusi tiedosto Xcode-projektiisi [Data Model[ -mallilla (laajennus .xcdatamoded). Tässä visuaalisessa editorissa määrittelet yksikköjä (vastaa taulukoita), niiden ominaisuuksia (sarakeita) ja suhteita muihin yksiköihin. Voit myös määrittää tietotyyppejä, oletusarvoja, validointisääntöjä ja indeksointivaihtoehtoja kyselyn suorituskyvyn optimoimiseksi.
Yhteisöjen ja suhteiden määrittely
Jokainen yhteisö edustaa sovelluksen hallinnoimaa objektia, kuten Käyttäjää, Tehtävää tai tuotetta. Attribuutit määrittelevät kyseisen yksikön ominaisuudet (nimi, hinta, päivämäärä jne.). Suhdesuhteet yhdistävät yksikköjä, jolloin Core Data voi seurata objektigraafioita ja automaattisesti levittää poistoja tai päivityksiä. Esimerkiksi "Personaalisella" yksiköllä voi olla yksi-monesta yksikköön, jotka Core Data voi noutaa kumpaankin suuntaan.
Kun suunnittelet suhteita, kiinnitä huomiota poista sääntö[]. Valinnat ovat Nullify, Cascade ja Kieltäytyminen. Väärän säännön valinta voi johtaa odottamattomaan tiedon menetykseen tai orpojen tallenteiden. Cascade on usein sopiva vanhemman ja lapsen välisiin suhteisiin, kun taas Nullify toimii hyvin vapaaehtoisten yhdistysten.
Luodaan NSManagedObject- alaluokkia
Kun kokonaisuusmallisi on valmis, Xcode voi automaattisesti luoda Swift-luokkia jokaiselle yhteisölle. Nämä alaluokat perivät [ ja sisältävät määrittelemäsi ominaisuudet ja suhteet. Xcode 8:sta alkaen suositeltava lähestymistapa on valita "Codegen" []Class Definition[] (oletusarvo), joka pitää luodut tiedostot johdetussa datakansiossa. Vaihtoehtoisesti voit valita "Manual/None" ja luoda omat alaluokat, jotka ovat hyödyllisiä lisättäessä mukautettuja menetelmiä tai tietokoneellisia ominaisuuksia.
Suorittavat CRUD-toiminnot
Kun pino on paikallaan, voit lisätä, noutaa, päivittää ja poistaa hallittuja kohteita . Kaikki toiminnot on suoritettava kontekstissa, ja muutokset jatkuvat vasta onnistuneen puhelun jälkeen.
Objektien luominen ja tallentaminen
Käytä ] ja aseta sen ominaisuudet. Kaikkien muutosten jälkeen soita . Kääri tallenna puhelut aina [-blokkiin, jotta voit käsitellä virheitä hienovaraisesti, erityisesti käyttäjän käynnistämien toimintojen aikana.
Tietojen noutaminen ennusteiden ja lajittele kuvaajat
on ensisijainen mekanismi esineiden tiedusteluun. Voit rajoittaa tuloksia [ (esim. ]) ja tilaustuloksia . Ydindata tukee myös yhdistepredikaatteja, ali- ja noutosuhteita innokkaasti. Suuria tietokokonaisuuksia varten rajoita aina noudon kokoa ja harkitse :n käyttöä muistin käytön vähentämiseksi.
Päivitys ja poisto
Esineen päivittäminen on yhtä yksinkertaista kuin sen ominaisuuksien muuttaminen kontekstissa; Core Data seuraa muutoksia automaattisesti. Voit poistaa, soittaa [. Muista tallentaa asiayhteys jälkikäteen. Erän poistojen osalta käytä , joka toimii suoraan pysyvässä myymälässä ilman, että esineet ladataan muistiin, mikä parantaa suorituskykyä dramaattisesti.
Tuotannon kannalta parhaat käytännöt
Jopa hyvin muokattu Core Data pino voi tulla pullonkaula tai lähde vikoja, jos ei käsitellä huolellisesti. Seuraa vakiintuneita kuvioita varmistaa sovellus pysyy reagoiva, vakaa ja skaalautuva.
Säikeen turvallisuus ja valuutta
Core Data-yhteys ei ole ole oletuksena langansuoja. Älä koskaan jaa langan välistä kontekstia. Käytä [-menetelmää [] luodaksesi yksityisen jonoyhteyden taustatoimintoja varten. Kun käytät päälankaan kuuluvia esineitä, käytä tai [-menetelmää lankalukkoa varmistaaksesi langan pysyvyyden. Swiftuin osalta -kiinteistökääreessä -toiminto kiinnittää automaattisesti huomiota tärkeimpiin kontekstiin liittyviin muutoksiin, mutta raskaat noudot tulisi silti ladata taustayhteyksiin.
Versio- ja maahanmuuttoasiat
Sovelluksen kehittyessä tietomallisi muuttaa ominaisuuksia, yksikköjen uudelleennimeämistä tai suhteiden muuttamista. Core Data tukee kahdentyyppistä migraatiota: [kevyen muuttoa[ ja -custom migration[[]]. Kevyen muuttojärjestelmän avulla voidaan helposti muuttaa (attribuuttien lisääminen, valinnaisuuden muuttaminen, ominaisuuksien uudelleennimeäminen tunnisteella) automaattisesti, jos siirrät vaihtoehtoja kauppojen lisäämisen yhteydessä. Monimutkaisten muutosten osalta luo kartoitusmalli ja toteuta alaluokat. Aina testaa muuttoja perusteellisesti, koska epäonnistuneet muuttot voivat korruptoida käyttäjätietoja.
Suorituskyvyn optimointi
Tehokas Core Data-suorituskyky alkaa datamallisuunnittelusta. Käytä [-indeksejä[[]] attribuuteissa, jotka näkyvät usein ennalta. Vältä koko objektin graafien noutamista silloin, kun tarvitaan vain osajoukko; sen sijaan käytä ja . Ydindatatukea []] vioittumista []], jossa kohteen ominaisuuksia ei ladata ennen kuin ne ovat käytettävissä. Voit esikatsella suhteita :n kanssa välttääksesi "vika-poltto"-pinnoitteen yläpuolella pöytänäkymän aikana. Lukemiseen käytetään :a, jotka palauttavat sanakirjoja täyden hallitun objektin sijaan.
Virheen käsittely
Jokainen nouto, tallentaminen ja poistaminen voi epäonnistua. Sulkekaa aina nämä puhelut -katkoksiin ja esittäkää käyttäjälle merkityksellisiä virheviestejä. Tallenna virheitä usein validointivirheiden tai rajoiterikkomusten vuoksi, joten tarkasta virheet huolellisesti. Core Datan virheobjektit sisältävät useita taustalla olevia virheitä, joiden avulla voit iteroida tietyn palautteen antamiseksi. Erän toimintoja varten käsittele [ asianmukaisesti ja huomioi, että eräpoistot eivät automaattisesti kaskadi, joten voit joutua käsittelemään niihin liittyviä esineitä manuaalisesti.
Ydindatan integrointi SwiftUI:hen
SwiftUI tarjoaa ensiluokkaista tukea Core Datalle kiinteistökääreiden ja ympäristöarvojen kautta. [ -kääre huomioi automaattisesti pääkontekstin ja virkistää näkymän, kun data muuttuu. Voit määrittää kuva-aiheet ja esimerkit suoraan kiinteistöilmoitukseen. Rakean valvonnan varmistamiseksi injektoida hallittu kohde ympäristöön käyttäen [. Kun työskentelet ...@ObservedObject... tai ..@StateObject...
SwiftUI myös yksinkertaistaa peruuntumishallintaa: asettaa kontekstiin, ja SwiftUI integroidaan automaattisesti järjestelmän undo/redo-eleisiin.
Ydindata vs. muut pysyvyysvalinnat
Vaikka Core Data on kaikkein kypsin ja integroitu ratkaisu iOS-paikalliseen tallennustilaan, se ei ole aina paras valinta. Vertaa sitä vaihtoehtoihin:
- Käyttäjänsuojaukset:[ Sopii pieniin käyttäjämääritelmiin, mutta ei monimutkaisiin tai suuriin tietoihin.
- Realm:[ tarjoaa yksinkertaisemman API- ja automaattisen reaktiivisen päivityksen, mutta lisää riippuvuutta eikä integroitu yhtä syvälle Swiftuin kanssa.
- Raw SQLite:[ antaa maksimaalisen hallinnan ja suorituskyvyn hyvin suurille tietokokonaisuuksille tai monimutkaisille kyselyille, mutta vaatii yhteyksien, migraatioiden ja pyörittämisen manuaalisesti.
- CloudKit + Core Data:[] Applen siltoja Core Data ja CloudKit, synkronoivat automaattisesti paikalliset muutokset pilveen.
Useimmissa standardi iOS-sovelluksissa, jotka vaativat jäsenneltyä dataa, suhteita ja offline-kapasiteettia, Core Data on edelleen suositeltava valinta, koska se on saumattomasti integroitunut alustaan ja käynnissä olevaan Apple-tukeen.
Päätelmät
Core Data tarjoaa objektigrafinhallintajärjestelmän, joka abstraktisti poistaa jatkuvan tallennus-, muutosseuranta- ja parisuhteenhallinnan monimutkaiset piirteet. Ymmärtämällä sen arkkitehtuuria .Hallitusta objektin kontekstista jatkuvaan astiaan.Ja noudattamalla hyväksi havaittuja koncurrenssi-, suorituskyky- ja virhekäsittelykäytäntöjä kehittäjät voivat rakentaa sovelluksia, jotka ovat sekä luotettavia että reagoivia. Olitpa rakentamassa yksinkertaista tehtäväluetteloa tai dataintensiivistä yrityssovellusta, Core Datan hallinta on arvokas taito, joka avaa tehokkaan paikallisen tiedonhallinnan iOS-järjestelmässä.
Lisätietoja saa Apple Core Data Dokumentation, Core Data Programming Guide, ja yhteisön resursseja, kuten []Ray Wenderlichin ydindata Tutorials[] varten käsin-harjoituksia ja syvempiä oivalluksia edistyneisiin aiheisiin, kuten muuttoliike ja valuutta.