Core Data (CRUD) Swift 4.2 aloittelijoille

Core Data on Applen macOS-ja iOS-käyttöjärjestelmissä tarjoama objektigraafi ja pysyvyyskehys. Se esiteltiin Mac OS X 10.4 Tigerissa ja iOS: ssä iPhone SDK 3.0: n kanssa. Sen avulla relaatio entiteetti-attribuuttimallin järjestämä data voidaan sarjailla XML -, binary-tai SQLite-varastoiksi.

Ydindatan uudet kehittäjät ovat usein hämmentyneitä SQLiten ja Ydindatan eroista. Jos mietit tarvitseeko SQLite – tai Ydintietoja, kysyt väärän kysymyksen. Muista, että ydintiedot eivät ole tietokantaa.

SQLite:

  • on tietojen rajoitteet ominaisuus.
  • toimii levylle tallennetuilla tiedoilla.
  • voi pudottaa taulun ja muokata tietoja lataamatta niitä muistiin.
  • hidas verrattuna ydinaineistoon.

perustiedot:

  • ei ole tietojen rajoitteita, tarvittaessa on toteutettava liiketoiminnan logiikka.
  • toimii muistissa.(data pitää ladata levyltä muistiin)
  • pitää ladata koko data, jos pitää pudottaa taulu tai päivittää.
  • nopea ennätysten teossa.(niiden tallentaminen voi olla aikaa vievää)

lisäksi paitsi SQLite back-end Core data voi käyttää XML-tai binaarimuodossa tietojen tallentamiseen levylle.

Ydintietorajoitukset

vaikka Ydintieto on loistava viitekehys, siinä on useita haittoja. Nämä haitat liittyvät suoraan kehyksen luonteeseen ja siihen, miten se toimii.

Ydinaineisto voi tehdä taikansa vain siksi, että se pitää hallitsemansa objektigrafiikan muistissa. Tämä tarkoittaa, että se voi toimia tallenteilla vain, kun ne ovat muistissa. Tämä on hyvin erilaista kuin SQL-kyselyn suorittaminen tietokannassa. Jos haluat poistaa tuhansia tietueita, ydintietojen on ensin ladattava jokainen tietue muistiin. On sanomattakin selvää, että tämä johtaa muisti-ja suorituskykyongelmiin, jos se tehdään väärin.

toinen tärkeä rajoitus on ydinaineiston kierteitysmalli. Kehysriihessä odotetaan, että sitä johdetaan yhdellä langalla. Onneksi ydintiedot ovat kehittyneet huimasti vuosien varrella ja puitteet ovat tuoneet erilaisia ratkaisuja, joiden avulla ydintietojen kanssa työskentely monitieteisessä ympäristössä on turvallisempaa ja helpompaa.

sovelluksille, joiden on hallittava monimutkaista objektigrafiikkaa, ydintiedot sopivat hyvin. Jos sinun tarvitsee tallentaa vain kourallinen toisiinsa liittymättömiä esineitä, niin saatat olla parempi kevyt ratkaisu tai käyttäjä oletusasetukset järjestelmä.

Core Data Demo (Create, Retrieve, Update and Delete)

jotta Ydintiedon perusteet voidaan osoittaa, luodaan single view iOS-sovellus, jossa Ydintietomoduuli on valittuna.

Luo projekti käyttämällä Ydintietoa

ensin luodaan uusi projekti ja valitaan ”käytä Ydintietoa”. Vaikka voit lisätä kyseisen kehyksen olemassa olevaan projektiin, on helpompi lisätä se siitä paikasta, koska kaikki on kytketty jo sinua varten.Kun projekti on luotu, näet tiedoston, kuten Coredatest.xcdatamodeld lisäsi.

kun klikkaat sitä, näet työkalun, jolla voit määrittää tietomalleja edustavia entiteettejä. Voit määritellä muutamia asioita jokaiselle entiteetille siellä, mutta meille attribuutit ja suhteet ovat tärkeimpiä.

lisää Olio

Määritä entiteetin nimi ja attribuutit

nyt, että olemme luoneet demoprojektin Core Data support. Tässä Xcode-mallissa on kaksi merkittävää muutosta, jotka ovat

  • uusi tiedosto CoreDataCRUD.xcdatamodeld
  • The AppDelegate.Swift-tiedosto Ydintietopinon koodilla

AppDelegate core data stack

Core Data Stack

the Core Data Stack code inside the AppDelegate.Swiftillä on selkeä dokumentaatio kommenttien muodossa, mutta lyhyesti sanottuna se asettaa pysyvänkontrollerin ja tallentaa tiedot, jos muutoksia tapahtuu. Koska AppDelegate on ensimmäinen tiedosto, joka suoritetaan heti sovelluksen käynnistämisen jälkeen, voimme tallentaa ja hakea kontekstin Ydintietopinosta.
nyt kun, olemme mallintaneet tietomme Käyttäjäkokonaisuudessa. On aika lisätä joitakin tietueita ja tallentaa ne Coredataan

Aloita tuomalla CoreData viewcontrolleriin.swift

Create Records to Core Data

the process of the records to Core Data has following tasks

  • Refer to persistentContainer from appdelegate
  • Create the context from persistentContainer
  • Create an entity with User
  • Create new record with this User Entity
  • aseta arvot tietueille jokaiselle avaimelle

luo tietueita silmukan kautta luodaksesi useita testitietueita

Hae tietoja

prosessi noutaminen tallennetut tiedot on erittäin helppoa samoin. Sillä on seuraava tehtävä

  • valmistella pyynnön tyyppi NSFetchRequest oliolle (esimerkissämme käyttäjä)
  • tarvittaessa käytä predikaattia suodatustietoihin
  • Hae tulos kontekstista muodossa array
  • iteroi array saada arvo tietylle avaimelle

voimme hakea tiedot käyttäjistämme käyttäen seuraavaa koodia.

päivitystiedot

päivitystietoa varten meidän on ensin noudettava/noudettava tietoja predikaatin kanssa samalla tavalla kuin edellä noudettava dataprosessi. Sitten alle muutaman askeleen seurata

  • valmistella pyyntö predikaatti olion (käyttäjä esimerkissämme)
  • nouda ennätys ja aseta uusi arvo avain
  • ja viimeinen Tallenna yhteydessä sama kuin luoda tietoja.

tässä yllä olevassa esimerkissä korvaa ”Ankur1 ””newName”

Delete Data

for delete record first we have to find object which want to delete by fetchRequest. seuraa sitten alla muutamia vaiheita, jolloin delete record

  • Prepare the request with predicate for the entity (User in our example)
  • Fetch record and which want to delete
  • And make context.poista (objekti) kutsu (ref kuva liitteenä)

tässä menetelmässä noudamme tietuetta käyttäjänimellä ”Ankur3” ja poistamme sen ja tallennamme sen.

No, tämä ei riitä ydintietoon, on monia monimutkaisia asioita, joita voimme tehdä ydintietojen seurantadatan muutoksilla, predikaattien lisäämisellä ja tietokantojen monimutkaisilla suhteilla. Kun käytät enemmän Ydintietoa, asiat monimutkaistuvat.