Začínáme s Core Data Tutorial

Toto je zkrácená kapitola z naší knihy Základní Údaje o výukových programů, který byl kompletně aktualizován pro Swift 4.2 a iOS 12. Tento tutoriál je prezentován jako součást naší zahajovací párty iOS 12-užijte si to!

Vítejte v základních datech!

v tomto tutoriálu napíšete svou první základní datovou aplikaci. Uvidíte, jak snadné je začít se všemi prostředky poskytovanými v Xcode, od šablon startovacích kódů po editor datových modelů.

budete narazit na zem běží hned od začátku. Na konci kurzu budete vědět, jak:

  • Model dat pomocí Xcode je model editor
  • Přidat nové záznamy do Základních Údajů
  • Načíst sadu záznamů ze Základních Údajů
  • Zobrazení načtené záznamy pomocí zobrazení tabulky.

Budete také získat pocit, jaké Základní Údaje dělá v zákulisí, a jak můžete komunikovat s různými pohybující kusů.

Začínáme

otevřete Xcode a vytvořte nový projekt iOS založený na šabloně aplikace Single View. Pojmenujte HitList aplikace a ujistěte se, že je zaškrtnuto použití základních dat.

kontrola datové schránky Use Core způsobí, že Xcode vygeneruje kód boilerplate pro to, co je v AppDelegate známé jako NSPersistentContainer.rychlý.

NSPersistentContainer se skládá ze sady objektů, které usnadňují ukládání a načítání informací z Základní Údaje. Uvnitř tohoto kontejneru je objekt pro správu stavu základních dat jako celku, objekt představující datový Model atd.

standardní zásobník funguje dobře pro většinu aplikací, ale v závislosti na vaší aplikaci a jejích požadavcích na data můžete zásobník přizpůsobit tak, aby byl efektivnější.

Poznámka: Ne všechny šablony Xcode v systému iOS ▸ aplikace mají možnost začít základními daty. V Xcode 10 mají zaškrtávací políčko Použít základní Data pouze šablony aplikací Master-Detail a Single View.

myšlenka této ukázkové aplikace je jednoduchá: zobrazí se tabulka se seznamem jmen pro váš vlastní „seznam hitů“. Do tohoto seznamu budete moci přidat jména a nakonec použít základní Data, abyste se ujistili, že jsou data uložena mezi relacemi. Nechceme omlouvat násilí na tomto webu, takže si můžete myslet na tuto aplikaci jako seznam oblíbených sledovat své přátele taky, samozřejmě!

klikněte na hlavní.storyboard otevřít v rozhraní Builder. Vyberte ovladač zobrazení na plátně a vložte jej do navigačního ovladače. V nabídce editoru Xcode vyberte Vložit do … ▸ navigační ovladač.

Klikněte na navigační ovladač je navigační panel, vyberte jej, a pak klikněte na Preferuje Velké Tituly v Atributy Inspektor. To dá ukázkové aplikaci styl názvu, který odpovídá akciovým aplikacím Apple.

poté přetáhněte pohled tabulky z knihovny objektů do řadiče zobrazení a poté jej změňte tak, aby pokrýval celé zobrazení.

pokud již není otevřen, použijte ikonu umístěnou v levém dolním rohu plátna k otevření osnovy dokumentu nástroje Interface Builder.

Ctrl-přetáhněte z pohledu tabulky v osnově dokumentu do jeho nadřazeného zobrazení a vyberte přední místo pro omezení bezpečné oblasti:

Udělejte to ještě třikrát, výběr omezení Koncové Prostor do Bezpečné Oblasti, Top Prostor do Bezpečné Oblasti, a konečně, Spodní Prostor na Bezpečnou Oblast. Přidáním těchto čtyř omezení vyplní zobrazení tabulky jeho nadřazené zobrazení.

poté přetáhněte položku tlačítka lišty a umístěte ji na navigační lištu ovladače zobrazení. Nakonec vyberte položku bar button a změňte její systémovou položku, kterou chcete přidat.

vaše plátno by mělo vypadat podobně jako následující snímek obrazovky:

pokaždé, když klepnete na tlačítko Přidat, zobrazí se řadič upozornění obsahující textové pole. Odtud budete moci do textového pole zadat něčí jméno. Klepnutím na Save uložíte název, zrušíte řadič upozornění a obnovíte zobrazení tabulky a zobrazíte všechna zadaná jména.

nejprve však musíte z řadiče zobrazení vytvořit zdroj dat zobrazení tabulky. Na plátně Ctrl-přetáhněte z pohledu tabulky na žlutou ikonu ovladače zobrazení nad navigačním pruhem, jak je uvedeno níže, a klikněte na zdroj dat:

V případě, že jste přemýšlel, nemusíte nastavit zobrazení tabulky je delegát od poklepáním na buňky nevyvolá žádnou akci. Není to jednodušší než tohle!

otevřete asistent editoru stisknutím Command-Option-Enter nebo výběrem prostředního tlačítka v sadě nástrojů editoru na liště Xcode.

Ctrl-drag z pohledu tabulky na ViewController.swift uvnitř definice třídy vytvořit IBOutlet.

dále pojmenujte novou vlastnost IBOutlet tableView, což má za následek následující řádek:

@IBOutlet weak var tableView: UITableView!

dále Ctrl-drag z tlačítka Přidat do ViewController.swift těsně pod vaší viewDidLoad() definice. Tentokrát, vytvořit akční namísto zásuvky, pojmenování metody addName, s typ UIBarButtonItem:

@IBAction func addName(_ sender: UIBarButtonItem) { }

nyní můžete odkazovat na tabulky, zobrazení a tlačítka panelu položku akce v kódu.

dále nastavíte model pro zobrazení tabulky. Do Viewcontrolleru přidejte následující vlastnost.swift pod tableView IBOutlet:

var names: = 

names je proměnlivý pole drží řetězec hodnoty zobrazené v zobrazení tabulky. Dále nahraďte implementaci viewDidLoad() následujícím:

override func viewDidLoad() { super.viewDidLoad() title = "The List" tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")}

tím se nastaví název na navigační liště a zaregistruje se třída UITableViewCell v zobrazení tabulky.

Poznámka: register(_:forCellReuseIdentifier:) zaručuje váš stůl zobrazení se vrátí buňka správný typ, když Buňka reuseIdentifier je poskytnut dequeue metoda.

další, stále v ViewController.swifte, pod definici třídy přidejte následující rozšíření UITableViewDataSource 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 }}

pokud jste někdy pracovali s UITableView, měl by tento kód vypadat velmi povědomě. Nejprve vrátíte počet řádků v tabulce jako počet položek v poli names.

další, tableView(_:cellForRowAt:) dequeues tabulka Zobrazit buňky a vyplní je s odpovídajícím řetězcem z pole names.

dále potřebujete způsob, jak přidat nová jména, aby je zobrazení tabulky mohlo zobrazit. Implementovat addName IBAction metoda Ctrl-přetáhnout do kódu dříve:

// 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)}

Pokaždé, když klepnete na tlačítko Přidat, tato metoda bude představovat UIAlertController s textové pole a dvě tlačítka: Uložit a Zrušit.

Uložit vloží textová pole aktuální text do pole names a poté znovu načte zobrazení tabulky. Vzhledem k tomu, že pole names je model, který podporuje zobrazení tabulky, v zobrazení tabulky se zobrazí vše, co zadáte do textového pole.

nakonec vytvořte a spusťte aplikaci poprvé. Poté klepněte na tlačítko Přidat. Řadič upozornění bude vypadat takto:

přidejte do seznamu čtyři nebo pět jmen. Měli byste vidět něco podobného níže:

zobrazení tabulky zobrazí data a vaše pole uloží jména, ale velká věc, která zde chybí, je vytrvalost. Pole je v paměti, ale pokud vynutíte ukončení aplikace nebo restartování zařízení, váš seznam hitů bude vymazán. Základní Data poskytují vytrvalost, což znamená, že mohou ukládat data v odolnějším stavu, takže mohou přežít opětovné spuštění aplikace nebo restart zařízení.

ještě jste nepřidali žádné základní datové prvky, takže po navigaci z aplikace by nic nemělo přetrvávat. Vyzkoušíme si to. Stiskněte tlačítko Domů, pokud používáte fyzické zařízení nebo ekvivalent (Shift + ⌘ + H), pokud používáte Simulátor. Tím se dostanete zpět do známé aplikace mřížky na domovské obrazovce:

Z domovské obrazovky, klepněte na HitList ikonu přinést aplikaci zpět do popředí. Jména jsou stále na obrazovce. Co se stalo?

když klepnete na tlačítko Domů, Aplikace aktuálně v popředí přejde na pozadí. Když k tomu dojde, operační systém flash-zamrzne vše, co je v současné době v paměti, včetně řetězců v poli jmen. Podobně, když je čas se probudit a vrátit se do popředí, operační systém obnoví to, co bývalo v paměti, jako byste nikdy neopustili.

Apple představil tyto pokroky v multitaskingu zpět v iOS 4. Vytvářejí bezproblémový zážitek pro uživatele iOS, ale přidávají vrásky definici vytrvalosti pro vývojáře iOS. Opravdu ta jména přetrvávají?

ne, opravdu ne. Pokud jste úplně zabili aplikaci v rychlém přepínači aplikací nebo vypnuli telefon, tato jména by byla pryč. Můžete to také ověřit. S aplikací v popředí zadejte rychlý přepínač aplikací. Můžete to udělat tím, že buď dvojitým klepnutím na tlačítko Domů, pokud vaše zařízení má jeden nebo pomalu táhnout směrem nahoru z dolní části obrazovky, pokud jste na iPhone X.

Z tu, flick HitList aplikace snímek nahoru k ukončení aplikace. Pokud pracujete na zařízení iPhone X, musíte dlouze stisknout snímek aplikace, dokud se v pravém horním rohu neobjeví červené tlačítko Odstranit.

po odebrání aplikace z přepínače aplikací by v živé paměti neměla být žádná stopa Hitlistu(bez slovní hříčky). Ověření jména jsou pryč návratu na domovskou obrazovku a klepnutím na HitList ikonu pro spuštění čerstvý start.

rozdíl mezi zmrazením blesku a vytrvalostí může být zřejmý, pokud jste s iOS nějakou dobu pracovali a jste obeznámeni s tím, jak funguje multitasking. V mysli uživatele však není žádný rozdíl. Uživatele nezajímá, proč jména jsou stále tam, zda aplikace šel do pozadí a vrátil se, nebo proto, že aplikace uložit a znovu načíst. Vše, na čem záleží, je, že jména jsou stále tam, když se aplikace vrátí!

takže skutečným testem vytrvalosti je, zda jsou vaše data stále po novém spuštění aplikace.

modelování dat

nyní víte, jak zkontrolovat vytrvalost, můžete se ponořit do základních dat. Váš cíl pro aplikaci HitList je jednoduchý: přetrvávají jména, která zadáte, takže jsou k dispozici pro prohlížení po novém spuštění aplikace.

až do tohoto okamžiku používáte obyčejné řetězce Swift k ukládání jmen do paměti. V této části tyto řetězce nahradíte základními datovými objekty.

prvním krokem je vytvoření modelu spravovaného objektu, který popisuje způsob, jakým základní Data reprezentují data na disku.

základní Data ve výchozím nastavení používají databázi SQLite jako trvalé úložiště, takže si můžete představit datový Model jako schéma databáze.

Poznámka: Při práci s jádrovými daty narazíte na slovo spravované docela dost. Pokud v názvu třídy vidíte „spravováno“, například v NSManagedObjectContext, je pravděpodobné,že máte co do činění s třídou základních dat. „Managed“ označuje správu základních dat o životním cyklu základních datových objektů.

nepředpokládejte však, že všechny základní datové třídy obsahují slovo „spravováno“. Většina ne. pro úplný seznam základních datových tříd, podívejte se na odkaz Core Data framework v prohlížeči dokumentace.

vzhledem k tomu, že jste se rozhodli používat základní Data, Xcode automaticky vytvořil soubor datového modelu pro vás a pojmenoval jej HitList.xcdatamodeld.

Otevřít Seznam Hitů.xcdatamodeld. Jak vidíte, Xcode má výkonný editor datových modelů:

editor datového modelu má mnoho funkcí, které můžete prozkoumat později. Prozatím se zaměřme na vytvoření jediné základní datové entity.

kliknutím na Přidat entitu vlevo dole vytvoříte novou entitu. Double-klikněte na novou entitu a změnit její název na Člověka, jako tak:

možná se divíte, proč model editor používá termín Entity. nebyl jsi jednoduše definovat novou třídu? Jak brzy uvidíte, základní Data přicházejí s vlastní slovní zásobou. Zde je rychlý přehled některých termínů, se kterými se běžně setkáte:

  • entita je definice třídy v základních datech. Klasickým příkladem je Employee nebo Company. V relační databázi entita odpovídá tabulce.
  • atribut je informace připojená k určité entitě. Například entita Employee může mít atributy pro zaměstnance name, position a salary. V databázi atribut odpovídá určitému poli v tabulce.
  • vztah je spojení mezi více entitami. V základních datech, vztahy mezi dvěma entitami jsou volány vztahy k jedné, zatímco vztahy mezi jednou a mnoha entitami jsou volány k mnoha vztahům. Například Manager může mít vztah k mnoha zaměstnancům, zatímco jednotlivec Employee bude mít obvykle vztah k jednomu se svým manažerem.
Poznámka: pravděpodobně jste si všimli, že entity zní hodně jako třídy. Rovněž, atributy a vztahy zní hodně jako vlastnosti. Jaký je v tom rozdíl? Základní datovou entitu můžete považovat za definici třídy a spravovaný objekt za instanci této třídy.

nyní víte, co je atribut, můžete přidat atribut do Person objektu vytvořeného dříve. Stále v Hitlistu.xcdatamodeld, vyberte Person na levé straně a klikněte na znaménko plus (+) pod atributy.

Nastavit nový atribut jméno, er, jméno a změnit jeho typ na String:

V Core Data, atribut může být jedním z několika datových typů.

ukládání do základních dat

otevřít ViewController.swift, přidejte následující Základní Údaje modul import pod UIKit import:

import CoreData

Tento import je vše, co potřebujete začít používat Základní Údaje API v kódu.

dále nahraďte definici vlastnosti names následujícím:

var people: = 

obchod Person entity, spíše než řetězec jména, takže můžete přejmenovat pole slouží jako zobrazení tabulky je datový model people. Nyní obsahuje instance NSManagedObject spíše než jednoduché řetězce.

NSManagedObject představuje jediný objekt uložený v základních datech; musíte jej použít k vytváření, úpravám, ukládání a mazání z trvalého úložiště základních dat. Jak brzy uvidíte, NSManagedObject je shape-shifter. Může mít podobu jakékoli entity ve vašem datovém modelu a přivlastnit si jakékoli atributy a vztahy, které jste definovali.

protože měníte model Zobrazení tabulky, musíte také nahradit obě metody zdroje dat implementované dříve. Nahraďte příponu UITableViewDataSource následujícím způsobem:

// 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 }}

nejvýznamnější změna těchto metod nastává v tableView(_:cellForRowAt:). Namísto porovnávání buněk s odpovídajícím řetězcem v poli modelu nyní porovnáváte buňky s odpovídajícím NSManagedObject.

Všimněte si, jak uchopíte atribut name z NSManagedObject. Stává se to zde:

cell.textLabel?.text = person.value(forKeyPath: "name") as? String

proč to musíš dělat? Jak se ukázalo, NSManagedObject neví name atribut definované v datovém Modelu, takže není žádný způsob, jak přístup je přímo u pozemku. Jediným způsobem, jak základní Data poskytují čtení hodnoty, je kódování klíčové hodnoty, běžně označované jako KVC.

Poznámka: KVC je mechanismus v základu pro nepřímý přístup k vlastnostem objektu pomocí řetězců. V tomto případě KVC způsobí, že se NSMangedObject za běhu chová poněkud jako slovník.

kódování klíčové hodnoty je k dispozici všem třídám zděděným od NSObject, včetně NSManagedObject. Nemůžete přistupovat k vlastnostem pomocí KVC na objektu Swift, který nepochází z NSObject.

Next, najít addName(_:) nahradit save UIAlertAction s následujícími:

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()}

To znamená text v textovém poli a prochází to přes novou metodu s názvem save(name:). Xcode si stěžuje, protože save(name:) ještě neexistuje. Přidejte ji níže 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)") }}

to je místo, kde základní data kopy! Zde je to, co kód dělá:

  1. než budete moci uložit nebo načíst cokoli z úložiště základních dat, musíte nejprve dostat ruce na NSManagedObjectContext. Kontext spravovaného objektu můžete považovat za „scratchpad“ v paměti pro práci se spravovanými objekty.

    Přemýšlejte o uložení nového spravovaného objektu Základní Údaje jako dvoustupňový proces: nejprve vložte nový podařilo objekt do řízeného objektu kontextu; jakmile jste spokojeni, můžete „spáchat“ změny v managed object kontextu, aby jej uložit na disk.

    Xcode již vygeneroval kontext spravovaného objektu jako součást šablony nového projektu. Nezapomeňte, že k tomu dojde pouze tehdy, když na začátku zaškrtnete políčko Použít základní Data. Tento výchozí kontext spravovaného objektu žije jako vlastnost NSPersistentContainer v delegátu aplikace. Chcete-li k němu přistupovat, nejprve získáte odkaz na delegáta aplikace.

  2. vytvoříte nový spravovaný objekt a vložíte jej do kontextu spravovaného objektu. Můžete to udělat v jednom kroku pomocí statické metody NSManagedObject: entity(forEntityName:in:).

    možná se divíte, o čem je NSEntityDescription. Připomeňme si dříve, NSManagedObject byla nazývána třídou shape-shifter, protože může představovat jakoukoli entitu. Popis entity je část spojující definici entity z vašeho datového modelu s instancí NSManagedObject za běhu.

  1. s NSManagedObject v ruce nastavíte atribut name pomocí kódování klíčové hodnoty. Klíč KVC (v tomto případěname) musíte hláskovat přesně tak, jak se zobrazuje ve vašem datovém modelu, jinak se vaše aplikace za běhu zhroutí.
  2. odevzdáte změny do person a uložíte na disk voláním save v kontextu spravovaného objektu. Poznámka save může vyvolat chybu, proto ji voláte pomocí klíčového slova try v bloku do-catch. Nakonec vložte nový spravovaný objekt do pole people, aby se zobrazil při opětovném načtení zobrazení tabulky.

to je trochu složitější než použití pole řetězců, ale není to tak špatné. Některé z kódu zde, jako je získání kontextu spravovaného objektu a entity, lze provést pouze jednou ve vašem vlastním init() nebo viewDidLoad() a poté znovu použít později. Pro jednoduchost, děláte to všechno stejnou metodou.

Sestavte a spusťte aplikaci, a přidat pár jmen k zobrazení tabulky:

Pokud názvy jsou ve skutečnosti uloženy v Core Data, HitList aplikace by měla projít vytrvalost test. S aplikací v popředí přejděte na rychlý přepínač aplikací a poté jej ukončete.

z odrazový můstek, klepněte na HitList app spustit nový start. Počkat, co se stalo? V zobrazení tabulky je prázdné:

zachránil Jsi na Základní Údaje, ale po čerstvé aplikaci spustit, people pole je prázdné! Je to proto, že data sedí na disku a čekají na vás, ale ještě je nezobrazujete.

načítání z základních dat

Chcete-li získat data z trvalého úložiště do kontextu spravovaného objektu, musíte je načíst. Otevřete ViewController.swift a přidejte následující níže viewDidLoad():

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)") }}

krok za krokem, to je to, co kód dělá:

  1. než budete moci dělat cokoli s jádrovými daty, potřebujete kontext spravovaného objektu. Načítání se neliší! Stejně jako dříve vytáhnete delegáta aplikace a uchopíte odkaz na jeho trvalý kontejner, abyste dostali ruce na jeho NSManagedObjectContext.
  2. jak název napovídá, NSFetchRequest je třída zodpovědná za načítání z základních dat. Načíst požadavky jsou výkonné a flexibilní. Pomocí požadavků na načtení můžete načíst sadu objektů splňujících zadaná kritéria (tj. dejte mi všechny zaměstnance žijící ve Wisconsinu a byli ve společnosti nejméně tři roky), individuální hodnoty (tj.

    požadavky na načtení mají několik kvalifikátorů používaných k upřesnění sady vrácených výsledků. Prozatím byste měli vědět, že NSEntityDescription je jednou z těchto požadovaných kvalifikací.

    nastavení Vlastnosti entity požadavku na načtení nebo alternativně inicializace pomocí init(entityName:) načte všechny objekty konkrétní entity. To je to, co děláte zde načíst všechny Person entity. Poznámka: NSFetchRequest je obecný typ. Toto použití generik určuje typ očekávané návratnosti požadavku na načtení, v tomto případě NSManagedObject.

  3. předáte požadavek na načtení do kontextu spravovaného objektu, abyste provedli zvedání těžkých břemen. fetch(_:) vrací pole spravovaných objektů splňujících kritéria zadaná požadavkem na načtení.

Poznámka: jako save(), fetch(_:) může také hodit chybu, takže ji musíte použít v bloku do. Pokud během načítání došlo k chybě, můžete zkontrolovat chybu uvnitř bloku catch a odpovídajícím způsobem reagovat.

sestavení a spuštění aplikace. Okamžitě byste měli vidět seznam jmen, která jste přidali dříve:

Skvělé! Jsou zpět z mrtvých (slovní hříčka). Přidejte do seznamu několik dalších jmen a restartujte aplikaci, abyste ověřili, že ukládání a načítání fungují. Krátké mazání aplikace, resetování Simulátor nebo házet telefon z vysoké budovy, jména se objeví v zobrazení tabulky bez ohledu na to, co.

Poznámka: V této ukázkové aplikaci bylo několik drsných hran: pokaždé jste museli získat kontext spravovaného objektu z delegáta aplikace a použili jste KVC k přístupu k atributům entity spíše než k přirozenějšímu stylu objektu person.name.

Klíčové Body

  • Základní Data poskytuje na disku perzistence, což znamená, že vaše data budou přístupná i po ukončení aplikace nebo vypnutí zařízení. To se liší od persistence v paměti, která uloží vaše data pouze tak dlouho, dokud je vaše aplikace v paměti, buď v popředí, nebo na pozadí.
  • Xcode je dodáván s výkonným editor datového modelu, který můžete použít k vytvoření modelu spravovaného objektu.
  • model spravovaného objektu se skládá z entit, atributů a vztahů
  • entita je definice třídy v základních datech.
  • atribut je informace připojená k entitě.
  • vztah je spojení mezi více entitami.
  • An NSManagedObject je reprezentace za běhu základní datové entity. Jeho atributy můžete číst a zapisovat pomocí kódování klíčové hodnoty.
  • potřebujete NSManagedObjectContextsave() nebo fetch(_:) data do A ze základních dat.

kam jít odtud?

dokončený projekt tohoto tutoriálu si můžete stáhnout pomocí tlačítek „stáhnout materiály“ v horní nebo dolní části tohoto tutoriálu.

v tomto tutoriálu jste již zažili několik základních konceptů základních dat: datové modely, entity, atributy, spravované objekty, kontexty spravovaných objektů a požadavky na načtení.

Pokud se vám to líbilo, co jste se naučili v této lekci, proč ne podívejte se na kompletní Základní Údaje o Výukové knihy, k dispozici v našem obchodě?

zde je ochutnávka toho, co je v knize:

1. Kapitola 1, Vaše první základní datová aplikace: kliknete na Soubor ▸ Nový projekt a napíšete základní datovou aplikaci od nuly! Tato kapitola popisuje základy nastavení datového modelu a následného přidávání a načítání záznamů.

2. Kapitola 2, podtřídy NSManagedObject: NSManagedObject je základní třída ukládání dat vašich grafů základních datových objektů. Tato kapitola vás naučí, jak přizpůsobit vlastní podtřídy spravovaných objektů pro ukládání a ověřování dat.

3. Kapitola 3, základní datový zásobník: pod kapotou se základní Data skládají z mnoha částí, které spolupracují. V této kapitole se dozvíte, jak tyto části do sebe zapadají, a přesuňte se od šablony starter Xcode a vytvořte si vlastní přizpůsobitelný systém.

4. Kapitola 4, Intermediate načítání: vaše aplikace bude načítat data po celou dobu, a základní Data nabízí mnoho možností, jak dostat data k vám efektivně. Tato kapitola se zabývá pokročilejšími požadavky na načtení, predikáty, třídění a asynchronní načítání.

5. Kapitola 5, nsfetchedresultscontroller: zobrazení tabulky jsou jádrem mnoha aplikací pro iOS a Apple chce, aby s nimi základní Data hrála pěkně! V této kapitole se dozvíte, jak vám NSFetchedResultsController může ušetřit čas a kód, když jsou vaše zobrazení tabulky zálohována daty z klíčových dat.

6. Kapitola 6, verze a migrace: jak aktualizujete a vylepšujete svou aplikaci, její datový model se bude téměř jistě muset změnit. V této kapitole se dozvíte, jak vytvořit více verzí datového modelu a poté přenést uživatele dopředu, aby si mohli při upgradu ponechat svá stávající data.

7. Kapitola 7, Unit Testy: Testování je důležitou součástí procesu vývoje, a neměli byste nechat Základních Údajů. V této kapitole se dozvíte, jak nastavit samostatné testovací prostředí pro základní Data, a uvidíte příklady, jak testovat své modely.

8. Kapitola 8, měření a zvyšování výkonnosti: Nikdo si nikdy nestěžoval, že aplikace byla příliš rychlá, takže je důležité být ostražitý ohledně sledování výkonu. V této kapitole se dozvíte, jak měřit výkon aplikace pomocí různých nástrojů Xcode a poté vyzvednout několik tipů pro řešení pomalých míst ve vašem kódu.

9. Kapitola 9, kontexty více spravovaných objektů: v této závěrečné kapitole rozbalíte obvyklý zásobník základních dat tak, aby zahrnoval více kontextů spravovaných objektů. Dozvíte se, jak to může zlepšit vnímaný výkon a pomoci, aby vaše architektura aplikace byla méně monolitická a více rozčleněná.

a pomoci sladit dohodu, digitální vydání knihy je v prodeji za $ 44.99! Ale nečekejte – tato prodejní cena je k dispozici pouze po omezenou dobu.

když už mluvíme o sladkých nabídkách, nezapomeňte se podívat na skvělé ceny, které letos rozdáváme s iOS 11 Launch Party, včetně více než $9,000 v dárcích!

Aby byly způsobilé pro tento epos iOS 12 prozradí, vše, co musíte udělat, je zanechat komentář na původní launch post, že nechá nám vědět, které knihy nebo kurzu je vaše oblíbené na tomto seznamu — nebo se, které nadcházející knihu nebo kurz jste nejvíc nadšený!

doufáme, že se vám tato aktualizace bude líbit a zůstaňte naladěni na další vydání a aktualizace knih!

raywenderlich.com Týdenní

raywenderlich.com newsletter je nejjednodušší způsob, jak zůstat up-to-date na vše, co potřebujete vědět jako mobilní vývojáře.

Získejte týdenní přehled našich výukových programů a kurzů a získejte bezplatný podrobný e-mailový kurz jako bonus!

Průměrné Hodnocení

4.6/5

Přidat hodnocení pro tento obsah

přihlaste se pro přidání hodnocení

56 hodnocení

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.