tämä on lyhennetty luku kirjastamme Core Data by Tutorial, joka on täysin päivitetty Swift 4.2: lle ja iOS 12: lle. Tämä opetusohjelma esitetään osana iOS 12-Lanseerausjuhlaamme-nauti!
Tervetuloa Core dataan!
tässä opetusohjelmassa kirjoitat aivan ensimmäisen Ydintietosovelluksesi. Näet, kuinka helppoa on päästä alkuun kaikilla resursseilla, joita Xcode tarjoaa, aloituskoodimalleista Datamallieditoriin.
lyöt juoksun heti alussa. Loppuun mennessä opetusohjelma tiedät miten:
- Xcoden mallieditorilla
- lisää uusia tietueita Ydintietoihin
- Hae tietuesarja Ydintiedoista
- Näytä noudetut tietueet taulukkonäkymällä.
saat myös käsityksen siitä, mitä Ydintieto tekee kulissien takana, ja miten voit olla vuorovaikutuksessa erilaisten liikkuvien kappaleiden kanssa.
aloittaminen
avaa Xcode ja luo Uusi iOS-projekti, joka perustuu Single View-Sovellusmalliin. Nimeä sovellus HitList ja varmista, että Käytä Ydintietoja on tarkistettu.
Use Core-tietolaatikon tarkistaminen aiheuttaa sen, että Xcode luo boilerplate-koodin, joka tunnetaan nimellä NSPersistentContainer
Appdelegatessa.nopea.
NSPersistentContainer
koostuu joukosta olioita, jotka helpottavat tietojen tallentamista ja hakemista Ydinaineistosta. Tämän säiliön sisällä on objekti, jolla hallitaan Ydintietotilaa kokonaisuutena, objekti, joka edustaa tietomallia ja niin edelleen.
standardipino toimii hyvin useimmissa sovelluksissa, mutta riippuen sovelluksestasi ja sen tietovaatimuksista, voit muokata pinoa tehokkaammaksi.
tämän näytesovelluksen idea on yksinkertainen: tulee pöytänäkymä, jossa on nimilista ikiomalle ”hittilistalle”. Voit lisätä nimiä tähän luetteloon, ja lopulta, käyttää Ydintietoja varmista, että tiedot tallennetaan istuntojen välillä. Emme suvaitse väkivaltaa tällä sivustolla, joten voit ajatella tätä sovellusta suosikkilistana pitääksesi silmällä myös ystäviäsi, tietenkin!
klikkaa Main.storyboard to open it in Interface Builder. Valitse näkymäohjain kankaalle ja upota se navigointiohjaimen sisään. Valitse Xcode Editor-valikosta upota … ▸ navigointiohjain.
Napsauta navigaatio-ohjaimen navigointipalkkia valitaksesi sen ja napsauta Prefers Large Titles in the Attributes Inspector. Tämä antaa näyte sovellus otsikko tyyli, joka vastaa Applen varastossa Sovellukset.
vedä seuraavaksi taulunäkymä objektikirjastosta näkymäohjaimeen ja muuta sen kokoa niin, että se kattaa koko näkymän.
jos se ei ole vielä auki, avaa käyttöliittymän rakentajan asiakirjakehys kankaan vasemmassa alakulmassa olevasta kuvakkeesta.
Ctrl-vedä dokumentin ääriviivojen Taulukkonäkymästä ylänäkymään ja valitse johtava tila turvalliseen aluerajoitukseen:
Tee tämä vielä kolme kertaa, valitsemalla rajoitukset perään tilaa turvallinen alue, Top Space turvallinen alue ja lopuksi, pohja Tilaa turvallinen alue. Kun nämä neljä rajoitusta lisätään, Taulukkonäkymä täyttää päänäkymänsä.
vedä seuraavaksi Viivapainike ja aseta se näkymäohjaimen navigointipalkkiin. Lopuksi, valitse bar painike kohde ja muuttaa sen järjestelmän kohde lisätä.
kankaasi tulisi näyttää samanlaiselta kuin seuraava kuvakaappaus:
joka kerta kun painat Lisää-painiketta, näkyviin tulee tekstikentän sisältävä hälytysohjain. Sieltä, voit kirjoittaa jonkun nimi tekstikenttään. Naputus Save
tallentaa nimen, hylkää hälytysohjaimen ja päivittää taulunäkymän näyttäen kaikki syöttämäsi nimet.
mutta ensin pitää tehdä näkymäohjaimesta taulunäkymän tietolähde. Piirtokankaassa Ctrl-vedä taulunäkymästä navigointipalkin yläpuolella olevaan keltaiseen näkymäohjaimen kuvakkeeseen, kuten alla on esitetty, ja klikkaa dataSource:
jos mietit, sinun ei tarvitse perustaa taulukon näkymä valtuutettu koska napauttamalla soluja ei laukaista mitään toimintaa. Tästä ei tule yksinkertaisempaa!
avaa apulaiseditori painamalla Komento-Optio-Enter tai valitsemalla muokkaimen työkalusarjan keskimmäinen painike Xcode-palkissa.
Ctrl-vedä taulunäkymästä Viewcontrollerille.swift sisällä luokan määritelmä luoda IBOutlet
.
seuraavaksi nimeä Uusi IBOutlet
ominaisuus tableView
, jolloin saadaan seuraava rivi:
@IBOutlet weak var tableView: UITableView!
seuraavaksi Ctrl-raahaa lisää-painikkeesta Viewcontrolleriin.swift hieman alle viewDidLoad()
– määritelmäsi. Tällä kertaa luo toiminto ulostulon sijaan, nimeämällä menetelmä addName
, tyypillä UIBarButtonItem
:
@IBAction func addName(_ sender: UIBarButtonItem) { }
voit nyt viitata taulukkonäkymään ja viivapainikkeen kohteen toimintaan koodilla.
seuraavaksi asetat mallin taulunäkymään. Lisää seuraava ominaisuus Viewcontrolleriin.swift alla tableView
IBOutlet
:
var names: =
names
on muunneltavissa oleva matriisi, jolla on taulukkonäkymän näyttämät merkkijonoarvot. Korvataan seuraavaksi viewDidLoad()
toteutus seuraavasti:
override func viewDidLoad() { super.viewDidLoad() title = "The List" tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")}
tämä asettaa otsikon navigointipalkkiin ja rekisteröi UITableViewCell
– luokan taulukkonäkymällä.
register(_:forCellReuseIdentifier:)
takaa, että taulunäkymäsi palauttaa oikean tyypin solun, kun solun reuseIdentifier-tunniste toimitetaan dequeue
– menetelmällä. Next, still in ViewController.swift, lisää seuraava UITableViewDataSource
laajennus alle luokkamääritelmäsi ViewController
:
// MARK: - UITableViewDataSourceextension ViewController: UITableViewDataSource { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return names.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) cell.textLabel?.text = names return cell }}
jos olet joskus työskennellyt UITableView
: n kanssa, tämän koodin pitäisi näyttää hyvin tutulta. Ensin palautat taulukon rivien määrän names
rivin kappalemääränä.
Seuraava, tableView(_:cellForRowAt:)
dequeues-taulukko katsoo soluja ja kansoittaa ne vastaavalla merkkijonolla names
– ryhmästä.
seuraavaksi tarvitset tavan lisätä uusia nimiä, jotta taulunäkymä voi näyttää ne. Toteuta addName
IBAction
– menetelmä, jonka Ctrl-raahasit koodiisi aiemmin:
// Implement the addName IBAction@IBAction func addName(_ sender: UIBarButtonItem) { let alert = UIAlertController(title: "New Name", message: "Add a new name", preferredStyle: .alert) let saveAction = UIAlertAction(title: "Save", style: .default) { action in guard let textField = alert.textFields?.first, let nameToSave = textField.text else { return } self.names.append(nameToSave) self.tableView.reloadData() } let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) alert.addTextField() alert.addAction(saveAction) alert.addAction(cancelAction) present(alert, animated: true)}
joka kerta kun painat Lisää-painiketta, tämä menetelmä esittää UIAlertController
tekstikentän ja kaksi painiketta: Tallenna ja Peruuta.
Tallenna lisää tekstikentät nykyisen tekstin names
taulukkoon ja lataa sitten taulukkonäkymän. Koska names
array on taulukkonäkymän taustalla oleva malli, taulukkonäkymässä näkyy se, mitä tekstikenttään kirjoitetaan.
Rakenna ja suorita sovellus vihdoin ensimmäistä kertaa. Napauta seuraavaksi Lisää-painiketta. Hälytysohjain näyttää tältä:
lisää listaan neljä tai viisi nimeä. Sinun pitäisi nähdä jotain vastaavaa alla:
pöytänäkymäsi näyttää tiedot ja järjestelmäsi tallentaa nimet, mutta iso asia puuttuu tässä on pysyvyys. Array on muistissa, mutta jos pakotat lopettamaan sovelluksen tai käynnistä laite uudelleen, hittilistasi pyyhitään pois. Core Data tarjoaa pysyvyys, eli se voi tallentaa tietoja kestävämpi tilassa, joten se voi elää pidempään sovelluksen uudelleen käynnistää tai laitteen uudelleenkäynnistys.
et ole vielä lisännyt mitään keskeisiä Tietoalkioita, joten minkään ei pitäisi säilyä sen jälkeen, kun navigoit pois sovelluksesta. Kokeillaan tätä. Paina Home-painiketta, jos käytät fyysistä laitetta, tai vastaavaa (Shift + ⌘ + H), jos käytät simulaattoria. Tämä vie sinut takaisin tuttuun sovellusruudukkoon kotinäytöllä:
napauta aloitusnäytöstä HitList-kuvaketta tuodaksesi sovelluksen takaisin etualalle. Nimet ovat yhä ruudussa. Mitä kävi?
kun napautat Koti-painiketta, etualalla oleva sovellus siirtyy taustalle. Kun tämä tapahtuu, käyttöjärjestelmä flash-jäädyttää kaiken tällä hetkellä muistissa, mukaan lukien merkkijonot nimet array. Samoin, kun on aika herätä ja palata etualalle, käyttöjärjestelmä palauttaa sen, mitä ennen oli muistissa kuin et olisi koskaan poistunut.
Apple esitteli nämä moniajon edistysaskeleet iOS 4: ssä. Ne luovat saumattoman kokemuksen iOS-käyttäjille, mutta lisäävät ryppyjä pysyvyyden määritelmään iOS-kehittäjille. Ovatko nimet todella itsepintaisia?
ei, ei oikeastaan. Jos olisit täysin tappanut sovelluksen fast app switcher tai sammutti puhelimen, ne nimet olisivat poissa. Voit myös vahvistaa tämän. Kun sovellus on etualalla, syötä nopea sovellusvaihtaja. Voit tehdä tämän joko kaksinkertainen napauttamalla Koti-painiketta, jos laitteessa on yksi tai hitaasti vetämällä ylöspäin näytön alareunasta, jos olet iPhone X.
tästä, flick HitList app snapshot ylöspäin lopettaa sovelluksen. Jos työskentelet iPhone X, sinun täytyy pitkään-paina sovelluksen tilannekuvan kunnes punainen Poista-painiketta näkyy oikeassa yläkulmassa.
kun olet poistanut sovelluksen app switcheristä, hitlististä ei pitäisi olla jälkeäkään elävässä muistissa (ei sanaleikkejä). Tarkista nimet ovat menneet palaamalla aloitusnäyttöön ja napauttamalla HitList-kuvaketta käynnistää uuden käynnistyksen.
ero salamajäädytyksen ja pysyvyyden välillä voi olla ilmeinen, jos olet työskennellyt iOS: n kanssa jonkin aikaa ja olet perehtynyt moniajon toimintatapaan. Käyttäjän mielessä eroa ei kuitenkaan ole. Käyttäjä ei välitä miksi nimet ovat edelleen olemassa, onko sovellus meni taustalla ja tuli takaisin, tai koska sovellus tallentaa ja ladata ne uudelleen. Vain sillä on väliä, että nimet ovat vielä olemassa, kun sovellus tulee takaisin!
joten todellinen pysyvyyden testi on, onko tietosi vielä olemassa tuoreen sovelluksen julkaisun jälkeen.
Oman datan mallintaminen
nyt kun osaat tarkistaa pysyvyyden, voit sukeltaa Ydintietoihin. Tavoitteesi HitList-sovellukselle on yksinkertainen: säilytä antamasi nimet niin, että ne ovat nähtävillä tuoreen sovelluksen käynnistämisen jälkeen.
tähän asti olet käyttänyt plain old Swift-merkkijonoja tallentaaksesi nimet muistiin. Tässä osiossa, voit korvata nämä merkkijonot ydin Data-objekteja.
ensimmäinen vaihe on luoda hallittu oliomalli, joka kuvaa tapaa, jolla Ydinaineisto edustaa levyllä olevaa dataa.
Perusdata käyttää oletuksena SQLite-tietokantaa pysyvänä säilönä, joten tietomallia voi pitää tietokantarakenteena.
NSManagedObjectContext
, kyseessä on todennäköisesti Ydintietoluokka. ”Hallittu” tarkoittaa Ydintiedon Ydintietoobjektien elinkaaren hallintaa.
älä kuitenkaan oleta, että kaikissa Ydintietoluokissa on sana ”hallittu”. Useimmat eivät. Jos haluat kattavan luettelon Ydintietoluokista, tutustu Ohjeselaimessa olevaan Ydintietokehyksen viitekehykseen.
koska olet päättänyt käyttää Ydintietoja, Xcode loi automaattisesti Sinulle Tietomallitiedoston ja nimesi sen Hitlistiksi.xcdatamodeld.
Avaa Hittilista.xcdatamodeld. Kuten näette, Xcode on tehokas Tietomallieditori:
Tietomallieditorissa on paljon ominaisuuksia, joita voit tutkia myöhemmin. Keskitytään nyt yhden Ydintietoyksikön luomiseen.
napsauta lisää entiteetti alhaalla vasemmalla luodaksesi uuden entiteetin. Kaksoisnapsauta uutta kokonaisuutta ja muuta sen nimi henkilöksi, kuten näin:
saatat ihmetellä, miksi mallieditori käyttää termiä Entity.
Etkö vain määritellyt uutta luokkaa? Kuten näette pian, Ydintiedolla on oma sanastonsa. Tässä on nopea alas joitakin termejä voit yleisesti kohdata:
- yhteisö on ydintiedoissa luokan määritelmä. Klassinen esimerkki on
Employee
taiCompany
. Relaatiotietokannassa olio vastaa taulukkoa. - attribuutti on tiettyyn kokonaisuuteen liitetty tieto. Esimerkiksi
Employee
yhteisöllä voi olla attribuutteja työntekijänname
,position
jasalary
. Tietokannassa attribuutti vastaa tiettyä taulukon kenttää. - suhde on usean yksikön välinen linkki. Ydinaineistossa kahden olion välisiä suhteita kutsutaan to-one-suhteiksi, kun taas yhden ja monen olion välisiä suhteita kutsutaan to-many-suhteiksi. Esimerkiksi
Manager
voi olla to-many suhde joukko työntekijöitä, kun taas yksilöEmployee
on yleensä to-one suhde hänen johtaja.
nyt tiedät mikä attribuutti on, voit lisätä attribuutin Person
aiemmin luotuun objektiin. Yhä Hitlistissä.xcdatamodeld, valitse Person
vasemmasta reunasta ja napsauta attribuuttien kohdalta plus-merkkiä ( + ).
Aseta uuden ominaisuuden nimeksi er, name ja muuta sen tyyppi merkkijonoksi:
Ydinaineistossa attribuutti voi olla yksi useista tietotyypeistä.
tallentaminen Ydintietoihin
Open ViewController.swift, lisää seuraava Ydintietomoduulin tuonti alle UIKit
tuonti:
import CoreData
tämä tuonti on kaikki mitä tarvitset alkaa käyttää Core Data API koodin.
korvaa seuraavaksi names
ominaisuusmääritelmä seuraavalla:
var people: =
tallennat Person
entiteettejä merkkijonojen nimien sijaan, joten nimeät taulukkonäkymän tietomallina toimivan taulukon people
. Siinä on nykyään yksinkertaisten merkkijonojen sijaan esiintymiä NSManagedObject
.
NSManagedObject
edustaa yhtä ydintietoihin tallennettua objektia; sinun on käytettävä sitä luodaksesi, muokataksesi, tallentaaksesi ja poistaaksesi Ydintietosi pysyvästä varastosta. Kuten pian näette, NSManagedObject
on muodonmuuttaja. Se voi olla minkä tahansa yksikön muodossa Tietomallissasi, omaksuen määrittelemäsi attribuutit ja suhteet.
koska taulukkonäkymän malli on vaihtumassa, täytyy myös korvata molemmat aiemmin toteutetut tietolähdetavat. Korvaa UITableViewDataSource
– laajennus seuraavalla:
// MARK: - UITableViewDataSourceextension ViewController: UITableViewDataSource { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return people.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let person = people let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) cell.textLabel?.text = person.value(forKeyPath: "name") as? String return cell }}
merkittävin muutos näihin menetelmiin tapahtuu tableView(_:cellForRowAt:)
. Sen sijaan, että solut täsmäävät mallijoukon vastaavan merkkijonon kanssa, ne täsmäävät nyt vastaavan merkkijonon NSManagedObject
kanssa.
huomaa, miten nappaat name
– attribuutin NSManagedObject
: stä. Se tapahtuu täällä.:
cell.textLabel?.text = person.value(forKeyPath: "name") as? String
miksi sinun täytyy tehdä tämä? Kävi ilmi, että NSManagedObject
ei tiedä tietomallissasi määrittelemästäsi name
– attribuutista, joten siihen ei ole mahdollista päästä suoraan ominaisuuden avulla. Ainoa tapa Ydinaineisto tarjoaa lukea arvo on avain-arvo koodaus, yleisesti kutsutaan KVC.
NSMangedObject
käyttäytymään suorituksen aikana jonkin verran sanakirjan tavoin.
Avainarvokoodaus on saatavilla kaikille luokille, jotka perivät NSObject
, mukaan lukien NSManagedObject
. Ominaisuuksia ei voi käyttää KVC: n avulla Swift-objektissa, joka ei laske arvoa NSObject
.
seuraavaksi etsi addName(_:)
ja korvaa save
UIAlertAction
seuraavalla:
let saveAction = UIAlertAction(title: "Save", style: .default) { action in guard let textField = alert.textFields?.first, let nameToSave = textField.text else { return } self.save(name: nameToSave) self.tableView.reloadData()}
tämä vie tekstin tekstikenttään ja siirtää sen uudelle menetelmälle, jonka nimi on save(name:)
. Xcode valittaa, koska save(name:)
ei ole vielä olemassa. Lisää se alle addName(_:)
:
func save(name: String) { guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { return } // 1 let managedContext = appDelegate.persistentContainer.viewContext // 2 let entity = NSEntityDescription.entity(forEntityName: "Person", in: managedContext)! let person = NSManagedObject(entity: entity, insertInto: managedContext) // 3 person.setValue(name, forKeyPath: "name") // 4 do { try managedContext.save() people.append(person) } catch let error as NSError { print("Could not save. \(error), \(error.userInfo)") }}
tässä kohtaa ydintiedot alkavat vaikuttaa! Näin koodi tekee:
- ennen kuin voit tallentaa tai hakea mitään Ydintietokannastasi, sinun on ensin saatava käsiisi
NSManagedObjectContext
. Voit pitää hallittua objektia kontekstina muistissa olevana ”scratchpadina” hallittujen objektien kanssa työskentelyä varten.ajattele uuden hallitun objektin tallentamista Ydintietoihin kaksivaiheisena prosessina: ensin lisätään uusi hallittu objekti hallittuun objektiyhteyteen; kun olet tyytyväinen, ”toimitat” muutokset hallittuun objektiyhteyteen tallentaaksesi sen levylle.
Xcode on jo luonut hallitun objektiyhteyden osana uuden projektin mallia. Muista, tämä tapahtuu vain, jos valitset Use Core Data-valintaruudun alussa. Tämä oletusarvoinen hallittu objekti-konteksti elää ominaisuutena
NSPersistentContainer
sovellusvaltuutetussa. Voit käyttää sitä, saat ensin viittaus app delegaatti. - luot uuden hallitun objektin ja lisäät sen hallitun objektin kontekstiin. Voit tehdä tämän yhdessä vaiheessa
NSManagedObject
: n staattisella menetelmällä:entity(forEntityName:in:)
.saatat ihmetellä, mistä
NSEntityDescription
on kyse. AiemminNSManagedObject
kutsuttiin muodonmuuttajaluokaksi, koska se voi edustaa mitä tahansa oliota. Entiteettikuvaus on kappale, joka yhdistää tietomallisi entiteettimääritelmän instanssiin, jonka arvo onNSManagedObject
suorituksen aikana.
- kun
NSManagedObject
on kädessä, määritetäänname
– attribuutti avainarvokoodauksella. KVC-näppäin (name
tässä tapauksessa) on tavattava täsmälleen sellaisena kuin se näkyy Tietomallissasi, muuten sovelluksesi kaatuu suoritettaessa. - toimitat muutokset kohteeseen
person
ja tallennat levylle kutsumallasave
hallittuun objektiyhteyteen. Huomautussave
voi heittää virheen, minkä vuoksi sitä kutsutaantry
– hakusanallado-catch
– lohkon sisällä. Lisää lopuksi Uusi hallittu objektipeople
– ryhmään niin, että se näkyy, kun taulunäkymä latautuu uudelleen.
se on hieman monimutkaisempaa kuin jousiston käyttäminen, mutta ei hullumpaa. Osa tässä olevasta koodista, kuten hallitun objektin kontekstin ja kokonaisuuden saaminen, voitiin tehdä vain kerran omalla init()
tai viewDidLoad()
sitten käyttää uudelleen myöhemmin. Yksinkertaisuuden vuoksi teet kaiken samalla menetelmällä.
Rakenna ja suorita sovellus ja lisää muutama nimi taulukkonäkymään:
jos Nimet todella tallennetaan Ydintietoihin, HitList-sovelluksen pitäisi läpäistä pysyvyystesti. Kun sovellus on etualalla, siirry fast app switcher ja sitten lopettaa sen.
ponnahduslaudalta, napauta HitList-sovellusta käynnistääksesi uuden laukaisun. Mitä tapahtui? Taulunäkymä on tyhjä:
Tallennit Ydintietoihin, mutta tuoreen app-julkaisun jälkeen people
array on tyhjä! Tämä johtuu siitä, että tiedot ovat levyllä odottamassa sinua, mutta et näytä sitä vielä.
haetaan perustiedoista
saadaksesi tietoja pysyvästä varastostasi hallittuun objektiyhteyteen, sinun on haettava se. Avaa ViewController.swift ja lisää alla seuraavatviewDidLoad()
:
override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) //1 guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { return } let managedContext = appDelegate.persistentContainer.viewContext //2 let fetchRequest = NSFetchRequest<NSManagedObject>(entityName: "Person") //3 do { people = try managedContext.fetch(fetchRequest) } catch let error as NSError { print("Could not fetch. \(error), \(error.userInfo)") }}
askel askeleelta, tämä on mitä koodi tekee:
- ennen kuin Ydintiedoilla voi tehdä mitään, tarvitaan hallittu oliokonteksti. Noutaminen ei ole sen kummempaa! Kuten ennenkin, vedät sovelluksen delegaatin ylös ja nappaat viittauksen sen pysyvään astiaan saadaksesi kätesi sen
NSManagedObjectContext
. - kuten nimestä voi päätellä,
NSFetchRequest
on luokka, joka vastaa hakemisesta Ydinaineistosta. Noutopyynnöt ovat sekä tehokkaita että joustavia. Voit hakea noutopyyntöjen avulla joukon annetut kriteerit täyttäviä esineitä (ts. anna minulle kaikki Wisconsinissa asuvat työntekijät, jotka ovat olleet yrityksessä vähintään kolme vuotta), yksilölliset arvot (eli anna minulle pisin nimi tietokannassa) ja enemmän.Noutopyynnöissä on useita karsintoja, joita käytetään palautettujen tulosten tarkentamiseen. Toistaiseksi kannattaa tietää, että
NSEntityDescription
on yksi näistä vaadituista karsinnoista.noutopyynnön
entity
ominaisuuden asettaminen tai vaihtoehtoisesti sen alustaminen arvollainit(entityName:)
hakee kaikki tietyn olion oliot. Näin haet täältä kaikkiPerson
oliot. Myös huomautusNSFetchRequest
on yleinen tyyppi. Tämä generiikan käyttö määrittää noutopyynnön odotetun palautustyypin, tässä tapauksessaNSManagedObject
. - luovutat noutopyynnön hallittuun objektiyhteyteen tehdäksesi raskaan noston.
fetch(_:)
palauttaa joukon hallittuja objekteja, jotka täyttävät noutopyynnön kriteerit.
save()
, myös fetch(_:)
voi heittää virheen, joten sitä on käytettävä do
lohkon sisällä. Jos noudon aikana tapahtui virhe, voit tarkastaa catch
– lohkon sisällä olevan virheen ja vastata siihen asianmukaisesti.Rakenna ja suorita sovellus. Heti, sinun pitäisi nähdä lista nimiä olet lisännyt aiemmin:
hienoa! He ovat palanneet kuolleista (sanaleikki tarkoitettu). Lisää muutama nimi listaan ja käynnistä sovellus uudelleen varmistaaksesi, että tallentaminen ja noutaminen toimivat. Paitsi sovelluksen poistaminen, simulaattorin nollaaminen tai puhelimen heittäminen korkealta rakennukselta, nimet näkyvät taulukkonäkymässä riippumatta siitä, mitä tapahtuu.
person.name
sijaan.Key Points
- Core Data tarjoaa levylle pysyvyyttä, mikä tarkoittaa, että tietosi ovat käytettävissä myös sovelluksen lopettamisen tai laitteen sulkemisen jälkeen. Tämä eroaa muistin pysyvyydestä, joka tallentaa tietosi vain niin kauan kuin sovelluksesi on muistissa, joko etualalla tai taustalla.
- Xcode sisältää tehokkaan Tietomallieditorin, jonka avulla voit luoda hallitun objektimallin.
- hallittu oliomalli koostuu entiteeteistä, attribuuteista ja suhteista
- Olio on ydintiedoissa luokkamääritelmä.
- attribuutti on kokonaisuuteen liitetty tieto.
- suhde on usean yksikön välinen linkki.
- An
NSManagedObject
On run-time representation of a Core Data entity. Voit lukea ja kirjoittaa sen attribuutteja käyttämällä Avainarvokoodausta. - tarvitset
NSManagedObjectContext
–save()
taifetch(_:)
tiedot Ydintietoihin ja niistä pois.
minne tästä eteenpäin?
voit ladata valmiin projektin tälle opetusohjelmalle käyttämällä tämän opetusohjelman ylä-tai alalaidassa olevia ”Download materials” – painikkeita.
tässä opetusohjelmassa olet jo kokenut useita Perusdatan käsitteitä: tietomalleja, entiteettejä, attribuutteja, hallittuja objekteja, hallittuja objektiyhteyksiä ja noutopyyntöjä.
jos olet nauttinut siitä, mitä olet oppinut tässä opetusohjelmassa, miksi et tutustu myymälästämme saatavaan täydelliseen Ydinaineistoon Tutorials-kirjan avulla?
tässä esimakua siitä, mitä kirjassa on:
1. Luku 1, Ensimmäinen Ydintietosovelluksesi: napsautat tiedostoa ▸ New Project ja kirjoitat Ydintietosovelluksen tyhjästä! Tämä luku kattaa perusteet perustaa tietomallin ja sitten lisäämällä ja hakemalla tietueita.
2. Luku 2, NSManagedObject-alaluokat: NSManagedObject on Ydintietoobjektin kuvaajien perustallennusluokka. Tämä luku opettaa sinulle, miten voit muokata omia hallittuja objektiluokkia tallentamaan ja vahvistamaan tietoja.
3. Luku 3, Ydintietopino: konepellin alla ydintiedot koostuvat monista yhdessä toimivista osista. Tässä luvussa, opit miten nämä osat sopivat yhteen, ja siirtyä pois starter Xcode malli rakentaa oman muokattavissa järjestelmä.
4. Luku 4, keskitason hakeminen: sovelluksesi hakevat tietoja koko ajan, ja Core Data tarjoaa monia vaihtoehtoja tietojen saamiseksi sinulle tehokkaasti. Tässä luvussa käsitellään edistyneempiä noutopyyntöjä, predikaatteja, lajittelua ja asynkronista noutoa.
5. Luku 5, NSFetchedResultsController: Taulukkonäkymät ovat monien iOS-sovellusten ytimessä, ja Apple haluaa saada ydintiedot pelaamaan hienosti niiden kanssa! Tässä luvussa opit, miten NSFetchedResultsController voi säästää aikaa ja koodia, kun Taulukkonäkymäsi tukee ydintietojen tietoja.
6. Luku 6, versiointi ja siirtyminen: kun päivität ja parannat sovellustasi, sen tietomallin on lähes varmasti muututtava. Tässä luvussa, opit luomaan useita versioita tietomallin ja sitten siirtää käyttäjät eteenpäin, jotta he voivat pitää olemassa olevia tietoja, kun ne päivittää.
7. Luku 7, yksikkötestit: testaus on tärkeä osa kehitysprosessia, ja sinun ei pitäisi jättää Ydintietoja pois siitä! Tässä luvussa opit perustamaan erillisen testausympäristön Ydintiedoille ja näet esimerkkejä malliesi testaamisesta.
8. Luku 8, suorituskyvyn mittaaminen ja tehostaminen: Kukaan ei koskaan valittanut, että sovellus oli liian nopea, joten on tärkeää olla valppaana suorituskyvyn seurannassa. Tässä luvussa, opit mitata sovelluksen suorituskykyä eri Xcode työkaluja ja sitten poimia joitakin vinkkejä käsitellä hitaita kohtia koodin.
9. Luku 9, Multiple Managed Object Contexts: tässä viimeisessä luvussa laajennat tavallista Ydintietopinoa sisältämään useita hallittuja objektiyhteyksiä. Opit, miten tämä voi parantaa havaittua suorituskykyä ja auttaa tekemään sovellusarkkitehtuuristasi vähemmän monoliittisen ja lokeroituneemman.
ja kaupan makeuttamiseksi kirjan digitaalinen painos on myynnissä hintaan 44,99 dollaria! Mutta älä odota — tämä myyntihinta on saatavilla vain rajoitetun ajan.
makeista sopimuksista puheen ollen, muista tarkistaa suuret palkinnot, joita jaamme tänä vuonna iOS 11: n Lanseerausjuhlissa, mukaan lukien yli 9 000 dollarin arvoiset kylkiäiset!
saadaksesi tämän eeppisen iOS 12-arvonnan, sinun tarvitsee vain jättää kommentti alkuperäiseen julkaisuun ja kertoa meille, mikä kirja tai kurssi on suosikkisi tällä listalla — tai mikä tuleva kirja tai kurssi, josta olet eniten innoissasi!
toivomme, että nautit tästä päivityksestä ja pysyt kuulolla saadaksesi lisää kirjajulkaisuja ja päivityksiä!
raywenderlich.com viikoittain
raywenderlich.com uutiskirje on helpoin tapa pysyä ajan tasalla kaikesta, mitä sinun tarvitsee tietää mobiilikehittäjänä.
Hanki viikottainen kooste tutoriaaleistamme ja kursseistamme ja saat bonuksena ilmaisen syvällisen sähköpostikurssin!
keskimääräinen arvosana
4.6/5
lisää luokitus tälle sisällölle
Kirjaudu sisään lisätäksesi luokituksen