Core Data (CRUD) s Swift 4.2 pro začátečníky
Core Data je objektový graf a rámec perzistence poskytovaný společností Apple v operačních systémech macOS a iOS. Byl představen v Mac OS X 10.4 Tiger a iOS s iPhone SDK 3.0. Umožňuje, aby data organizovaná modelem atributu relační entity byla serializována do obchodů XML, binary nebo SQLite.
Vývojáři nového Core Data jsou často zmateni rozdíly mezi SQLite a Základní Údaje. Pokud vás zajímá, zda potřebujete SQLite nebo základní Data, pak se ptáte na špatnou otázku. Pamatujte, že základní Data nejsou databází.
SQLite:
- mají funkci omezení dat.
- pracuje na datech uložených na disku.
- může upustit tabulku a upravovat data bez jejich načtení do paměti.
- pomalé ve srovnání s hlavními daty.
základní údaje:
- nemají omezení dat, v případě potřeby je třeba implementovat obchodní logikou.
- pracuje v paměti.(data je třeba načíst z disku do paměti)
- je třeba načíst celá data, pokud potřebujeme zrušit tabulku nebo aktualizovat.
- rychle, pokud jde o vytváření záznamů.(jejich uložení může být časově náročné)
kromě SQLite jako back-end jádra dat lze použít XML nebo binární formát pro ukládání dat na disk.
omezení základních dat
i když jsou základní Data fantastickým rámcem, existuje několik nevýhod. Tyto nevýhody přímo souvisejí s povahou rámce a jeho fungováním.
základní Data mohou dělat své kouzlo pouze proto, že udržují graf objektu, který spravuje, v paměti. To znamená, že může pracovat pouze na záznamech, jakmile jsou v paměti. To se velmi liší od provádění dotazu SQL v databázi. Pokud chcete odstranit tisíce záznamů, základní Data musí nejprve načíst každý záznam do paměti. Je samozřejmé, že to má za následek problémy s pamětí a výkonem, pokud jsou provedeny nesprávně.
dalším důležitým omezením je závitový model základních dat. Rámec očekává, že bude spuštěn na jednom vlákně. Naštěstí se základní Data v průběhu let dramaticky vyvinula a rámec zavedl různá řešení, aby byla práce s jádrovými daty ve vícevláknovém prostředí bezpečnější a jednodušší.
pro aplikace, které potřebují spravovat komplexní objektový graf, jsou základní Data skvělá. Pokud potřebujete pouze uložit hrst nesouvisejících objektů, pak vám může být lépe s lehkým řešením nebo systémem user defaults.
základní data Demo (vytvořit, načíst, aktualizovat a odstranit)
za účelem prokázání základy základních dat, pojďme vytvořit single view iOS aplikace s jádrem datový modul vybrán.
za Prvé, pojďme vytvořit nový projekt a pojďme vyberte „Základní Údaje“. I když můžete tento rámec přidat pro svůj stávající projekt, je snazší jej přidat z tohoto místa, protože vše bude již pro vás zapojeno.Jakmile je projekt vytvořen, uvidíte soubor jako CoreDataTest.přidáno xcdatamodeld.
když na něj kliknete, uvidíte nástroj, který vám umožní konfigurovat entity, které představují datové modely. Pro každou entitu zde můžete definovat několik věcí, ale pro nás budou nejdůležitější atributy a vztahy.
Nyní, že jsme vytvořili demo projekt s Core Data podporu. Existují dvě významné změny v této šabloně Xcode můžeme snadno pozorovat, které jsou
- nový soubor CoreDataCRUD.xcdatamodeld
- AppDelegate.swift souboru s Core Data Stack kód
Základní Data, Stack
Základní Zásobník Dat kód uvnitř AppDelegate.swift má jasnou dokumentaci ve formě komentářů, ale zkrátka nastavuje persistentContainer a ukládá data, pokud dojde k nějakým změnám. Jako AppDelegate je první soubor, který se spustí, jakmile aplikace spuštěna, můžeme uložit a načíst kontext ze zásobníku základních dat.
nyní jsme modelovali naše data v entitě uživatele. Je čas přidat nějaké záznamy a uložit je do CoreData
začněte importem CoreData do našeho viewcontrolleru.swift
Vytvořit Záznamy k Core Data
proces přidávání záznamů do Základních Údajů má následující úkoly
- Viz persistentContainer z appdelegate
- Vytvořit kontext, z persistentContainer
- Vytvořit entitu Uživatele s
- Vytvořit nový záznam se tato Uživatelská Jednotka
- Nastavit hodnoty pro záznamy pro každý klíč
Načíst Data
proces načítání uložených dat je také velmi snadné. To má následující úkol
- Připravit žádost typ NSFetchRequest pro subjekt (Uživatel v našem příkladu)
- pokud je nutné použít predikát pro filtrování dat
- Fetch výsledek z kontextu, ve formě pole
- Iterovat přes pole získat hodnotu pro konkrétní klíč
můžeme načíst data od našich Uživatelů subjektu pomocí následující kód.
Aktualizace Dat
Pro aktualizaci záznamu nejprve musíme načíst/Načtení dat s predikátu jako stejný jako výše Načtení dat procesu. Pak si níže několik kroků následovat,
- Připravit žádost s predikátu k subjektu (Uživatel v našem příkladu)
- Načíst záznam a Nastavte Novou hodnotu s klíčem
- A Posledního Uložení kontextu, stejně jako vytvořit data.
Odstranit Data
odstranit záznam nejprve musíme najít objekt, který chceme smazat tím, že fetchRequest. pak postupujte podle následujících několik kroků pro smazání záznamu
- Připravit žádost s predikátu k subjektu (Uživatel v našem příkladu)
- Načíst záznam a, který chceme smazat
- A kontextu.delete(objekt) zavolejte (viz obrázek přiložený níže)
No, to není dost, aby základní údaje, existuje mnoho složitých věcí, které můžeme udělat s core data dat sledování změn, přidávání Predikáty a složité vztahy databází. Jak používáte více základních dat, věci se stávají složitějšími.