Chybějící příručky
pro vývoj ve Swiftu
Příručka, kterou bych si přál mít, když jsem začínal
Připojte se k více než 20 000 vývojářům, kteří se učí o vývoji ve Swiftu
Stáhněte si zdarma kopii
Pokud toto čtete, pak předpokládám, že s Core Data začínáte. Možná jste o Core Data slyšeli a rádi byste zjistili, zda se hodí pro vás nebo pro projekt, na kterém pracujete. Pokud na vás tento popis sedí, pak se posaďte. Tento výukový kurz Core Data vás naučí vše, co potřebujete vědět, abyste lépe pochopili, co Core Data jsou a co nejsou.
- Co je Core Data
- Jaký je jeho původ
- Kam patří
- Správa objektového grafu
- Kdy používat Core Data
- Jak se liší od SQLite
- SQLite
- Core Data
- Omezení Core Data
- Prozkoumání zásobníku Core Data
- Model spravovaných objektů
- Řízený objektový kontext
- Koordinátor trvalého úložiště
- Persistentní úložiště
- – úložiště v paměti
- Jak funguje zásobník základních dat
- V kostce
Co je Core Data
Vývojáři, kteří s tímto frameworkem začínají, velmi často nevěnují čas tomu, aby se dozvěděli, co Core Data jsou. Když nevíte, co Core Data jsou, je velmi těžké pochopit jejich zákoutí. Rád bych věnoval několik minut zkoumání podstaty Core Data a hlavně objasnění toho, co Core Data jsou a co nejsou.
Jaký je jeho původ
Core Data je framework vyvinutý a spravovaný společností Apple. Existuje už více než deset let a v systému macOS se poprvé objevil s vydáním systému macOS Tiger v roce 2005. V roce 2009 společnost tento framework zpřístupnila v systému iOS s vydáním iOS 3.
Kam patří
Core Data je M v MVC, modelové vrstvě aplikace. Přestože Core Data umí perzistovat data na disku, perzistence dat je ve skutečnosti volitelnou funkcí frameworku. Core Data je především rámec pro správu objektového grafu.
O Core Data jste pravděpodobně slyšeli a četli již před absolvováním tohoto kurzu. To znamená, že už možná víte, že Core Data není databáze a že spravuje objektový graf aplikace. Obě tvrzení jsou pravdivá. Co ale ve skutečnosti znamenají?
Správa objektového grafu
Core Data především spravuje objektový graf. Objektový graf není nic jiného než kolekce objektů, které jsou navzájem propojeny. Rámec Core Data vyniká ve správě složitých objektových grafů.
Postará se o správu životního cyklu objektů v objektovém grafu a volitelně může objektový graf persistovat na disku. Nabízí také výkonné rozhraní pro prohledávání grafu objektů, který spravuje.
Jádro Data je však mnohem víc než to. Framework přidává řadu dalších zajímavých funkcí, jako je ověřování vstupů, verzování datového modelu a sledování změn.
Kdy používat Core Data
Framework se skvěle hodí pro celou řadu aplikací, ale ne každá aplikace by měla Core Data používat. Aplikace, které potřebují odlehčenou modelovou vrstvu, by Core Data používat neměly. Existuje mnoho odlehčených knihoven, které tento typ funkcí poskytují.
Pokud hledáte obal SQLite, pak Core Data také nepotřebujete. Pro lehký a výkonný wrapper SQLite vřele doporučuji FMDB od Guse Muellera. Tato robustní a vyspělá knihovna poskytuje objektově orientované rozhraní pro interakci s SQLite.
Core Data je vynikající volbou, pokud chcete řešení, které spravuje modelovou vrstvu vaší aplikace.
Jak se liší od SQLite
Vývojáři, kteří s Core Data začínají, jsou často zmateni rozdíly mezi SQLite a Core Data. Pokud se ptáte, zda potřebujete SQLite nebo Core Data, pak se ptáte špatně. Pamatujte, že Core Data není databáze.
SQLite
SQLite je lehká databáze, která je velmi výkonná, a proto se hodí pro mobilní aplikace. I když je SQLite inzerována jako relační databáze, je důležité si uvědomit, že udržování vztahů mezi záznamy uloženými v databázi máte na starosti vy, vývojáři.
Core Data
Core Data jde mnohem dál. Poskytuje abstrakci, která umožňuje interakci s modelovou vrstvou objektově orientovaným způsobem. Každý záznam, se kterým interagujete, je objekt. Core Data odpovídá za integritu objektového grafu. Zajišťuje aktuálnost objektového grafu.
Omezení Core Data
Přestože je Core Data fantastický framework, má několik nevýhod. Tyto nevýhody přímo souvisejí s povahou frameworku a jeho fungováním.
Core Data může provádět svá kouzla jen proto, že udržuje graf objektů, který spravuje, v paměti. To znamená, že může pracovat se záznamy pouze tehdy, když jsou v paměti. To se velmi liší od provádění dotazů SQL na databázi. Pokud chcete vymazat tisíce záznamů, musí Core Data nejprve načíst každý záznam do paměti. Je samozřejmé, že při nesprávném postupu to vede k problémům s pamětí a výkonem.
Dalším důležitým omezením je vláknový model Core Data. Framework očekává, že bude spuštěn v jednom vlákně. Naštěstí se framework Core Data v průběhu let výrazně vyvinul a zavedl různá řešení, díky nimž je práce s Core Data ve vícevláknovém prostředí bezpečnější a jednodušší.
Pro aplikace, které potřebují spravovat složitý objektový graf, se Core Data skvěle hodí. Pokud potřebujete ukládat jen hrstku nesouvisejících objektů, bude pro vás možná lepší odlehčené řešení nebo systém výchozího nastavení uživatele.
Prozkoumání zásobníku Core Data
Teď, když víte, co Core Data jsou a co nejsou, je čas přiblížit si stavební kameny frameworku. Je nezbytné, abyste pochopili, jak spolu jednotlivé třídy, které tvoří rámec, spolupracují.
Hvězdami rámce jsou:
- model spravovaných objektů
- kontext spravovaných objektů
- a koordinátor trvalého úložiště
Tento diagram ukazuje, jak spolu tyto třídy souvisejí. Začněme modelem spravovaných objektů.
Model spravovaných objektů
Model spravovaných objektů je instancí třídy NSManagedObjectModel
. Zatímco typická aplikace Core Data má jednu instanci třídy NSManagedObjectModel
, je možné jich mít více. Instance spravovaného objektového modelu představuje datový model aplikace Core Data.
Výše uvedený diagram ukazuje, že spravovaný objektový model je propojen s datovým modelem. Datový model je reprezentován souborem ve svazku aplikace, který obsahuje datové schéma aplikace. Datové schéma není nic jiného než kolekce entit.
Antyta může mít atributy a vztahy, které tvoří datový model aplikace. Prozatím si pamatujte, že řízený objektový model instance je třídy NSManagedObjectModel
a že ji datový model aplikace Core Data představuje.
Řízený objektový kontext
Řízený objektový kontext je reprezentován instancí třídy NSManagedObjectContext
. Aplikace Core Data má jeden nebo více spravovaných objektových kontextů, z nichž každý spravuje kolekci modelových objektů, instancí třídy NSManagedObject
.
Schéma, které jsme zkoumali dříve, znázorňuje, že spravovaný objektový kontext přijímá modelové objekty prostřednictvím koordinátora trvalého úložiště. Uchovává odkaz na koordinátor trvalého úložiště aplikace.
Kontext spravovaných objektů je objekt, se kterým se nejčastěji pracuje. Vytváří, čte, aktualizuje a odstraňuje objekty modelu. Z pohledu vývojáře je třída NSManagedObjectContext
pracovním koněm frameworku Core Data.
Koordinátor trvalého úložiště
Koordinátor trvalého úložiště je reprezentován instancí třídy NSPersistentStoreCoordinator
a hraje klíčovou roli v každé aplikaci Core Data. I když je možné mít více koordinátorů perzistentního úložiště, většina aplikací má pouze jednoho. Velmi, velmi zřídka je potřeba mít v aplikaci více koordinátorů trvalého úložiště.
Kordinátor trvalého úložiště uchovává odkaz na model spravovaných objektů a každý nadřazený kontext spravovaných objektů uchovává odkaz na koordinátor trvalého úložiště. O rodičovské a podřízené kontexty spravovaných objektů se prozatím nestarejte.
Výše uvedený diagram nám ukazuje, že koordinátor perzistentního úložiště je připojen k jednomu nebo více perzistentním úložištím. Tím se dostáváme k perzistentnímu úložišti.
Persistentní úložiště
Pamatujte, že Core Data spravuje objektový graf. Tento rámec je užitečný pouze tehdy, je-li koordinátor perzistentního úložiště připojen k jednomu nebo více perzistentním úložištím. Z výroby podporuje Core Data tři typy perzistentních úložišť:
- databáze SQLite
- binární úložiště
– úložiště v paměti
Každý typ perzistentního úložiště má své výhody a nevýhody. Většina aplikací používá jako perzistentní úložiště databázi SQLite. Jak jsem již zmínil, SQLite je lehká a velmi rychlá. Skvěle se hodí pro mobilní a desktopové aplikace.
Jak funguje zásobník základních dat
Teď, když víte, z čeho se skládá zásobník základních dat, je čas prozkoumat, jak funguje v aplikaci. Srdcem aplikace Core Data je koordinátor trvalého úložiště. Koordinátor perzistentního úložiště je při vytváření zásobníku Core Data instancován jako první.
Ale abychom mohli vytvořit koordinátor perzistentního úložiště, potřebujeme spravovaný objektový model. Proč tomu tak je? Koordinátor perzistentního úložiště potřebuje vědět, jak vypadá datové schéma aplikace.
Po nastavení koordinátora perzistentního úložiště a modelu spravovaných objektů se inicializuje pracovní kůň zásobníku Core Data, kontext spravovaných objektů. Nezapomeňte, že kontext spravovaných objektů uchovává odkaz na koordinátor perzistentního úložiště.
Po nastavení zásobníku Core Data je aplikace připravena používat Core Data k interakci s perzistentním úložištěm aplikace. Ve většině případů aplikace komunikuje s koordinátorem perzistentního úložiště prostřednictvím kontextu spravovaných objektů.
Přímo s koordinátorem perzistentního úložiště nebo modelem spravovaných objektů budete komunikovat jen zřídka, pokud vůbec. Jak jsem se již zmínil, nejčastěji budete komunikovat s třídou NSManagedObjectContext
Kontext spravovaných objektů slouží k vytváření, čtení, aktualizaci a mazání záznamů. Při ukládání změn provedených v kontextu spravovaných objektů je kontext spravovaných objektů předá koordinátoru perzistentního úložiště, který změny odešle do příslušného perzistentního úložiště.
Pokud má aplikace více perzistentních úložišť, koordinátor perzistentního úložiště zjistí, do kterého perzistentního úložiště je třeba uložit změny kontextu spravovaných objektů.
V kostce
Teď znáte základy frameworku Core Data. Již nyní máte náskok, protože většina vývojářů tento krok přeskočí. Dalším krokem, který musíte udělat, je začít framework používat. Pokud potřebujete pomoc, doporučuji se podívat na knihu Mastering Core Data With Swift.
The Missing Manual
for Swift Development
The Guide I Wish I Had When I Started Out
Přidejte se k více než 20 000 vývojářům, kteří se učí o vývoji ve Swiftu
Stáhněte si zdarma kopii knihy
.