Core Data (CRUD) a Swift 4.2 kezdőknek
a Core Data egy objektumgráf és perzisztencia keretrendszer, amelyet az Apple biztosít a macOS és iOS operációs rendszerekben. Mac OS X 10.4 Tiger-ben és iOS-ben mutatták be az iPhone SDK 3.0-val. Lehetővé teszi, hogy a relációs entitás–attribútum modell által szervezett adatokat XML, bináris vagy SQLite tárolókba sorosítsák.
a Core Data új fejlesztőit gyakran összekeverik az SQLite és a Core Data közötti különbségek. Ha kíváncsi, hogy szüksége van-e SQLite-re vagy Alapadatokra, akkor rossz kérdést tesz fel. Ne feledje, hogy az alapadatok nem adatbázisok.
négyzetkilométer:
- Adatkorlátok funkció.
- adatokon működik, lemezen tárolt.
- eldobhatja a táblázatot és szerkesztheti az adatokat anélkül, hogy betöltené őket a memóriába.
- lassú az alapadatokhoz képest.
alapadatok:
- nincs adatkorlátozás, ha szükséges, az üzleti logika szerint kell végrehajtani.
- működik a memóriában.(az adatokat a lemezről a memóriába kell betölteni)
- teljes adatokat kell betölteni, ha le kell dobnunk a táblázatot vagy a frissítést.
- gyors szempontjából rekord létrehozása.(a Mentés időigényes lehet)
emellett eltekintve SQLite a back-end alapadatok használhatja XML vagy bináris formátumban adatok tárolására a lemezre.
alapadatok korlátai
annak ellenére, hogy az alapadatok fantasztikus keretrendszer, számos hátránya van. Ezek a hátrányok közvetlenül kapcsolódnak a keretrendszer jellegéhez és működéséhez.
az alapadatok csak azért tudnak varázsolni, mert az általa kezelt objektumgráfot a memóriában tartják. Ez azt jelenti, hogy csak akkor működhet rekordokon, ha azok a memóriában vannak. Ez nagyon különbözik az SQL lekérdezés adatbázison történő végrehajtásától. Ha több ezer rekordot szeretne törölni, az Alapadatoknak először be kell tölteniük az egyes rekordokat a memóriába. Magától értetődik, hogy ez memória-és teljesítményproblémákat eredményez, ha helytelenül történik.
egy másik fontos korlátozás az alapadatok menetvágási modellje. A keretrendszer várhatóan egyetlen szálon fut. Szerencsére az alapadatok drámai módon fejlődtek az évek során, és a keretrendszer különféle megoldásokat vezetett be annak érdekében, hogy az alapadatokkal való munka többszálú környezetben biztonságosabb és könnyebb legyen.
olyan alkalmazásokhoz, amelyeknek komplex objektumgráfot kell kezelniük, a Core Data kiválóan illeszkedik. Ha csak egy maroknyi nem kapcsolódó objektumot kell tárolnia, akkor jobb lehet egy könnyű megoldás vagy a felhasználói alapértelmezett rendszer.
Core Data Demo (Create, Retrieve, Update and Delete)
annak érdekében, hogy bemutassa alapjait a Core Data, hozzunk létre egy nézet iOS app Core Data modul kiválasztott.
először hozzunk létre egy új projektet, és válasszuk az “alapadatok használata”lehetőséget. Bár hozzáadhatja ezt a keretet a meglévő projektjéhez, könnyebb hozzáadni azt a helyet, mivel minden már az Ön számára lesz bekötve.A projekt létrehozása után megjelenik egy olyan fájl, mint a CoreDataTest.xcdatamodeld hozzáadva.
amikor rákattint, megjelenik egy eszköz, amely lehetővé teszi az adatmodelleket reprezentáló entitások konfigurálását. Néhány dolgot definiálhatsz minden egyes entitás számára, de számunkra a tulajdonságok és a kapcsolatok lesznek a legfontosabbak.
most, hogy létrehoztunk egy demo projekt alapadatok támogatása. Két figyelemre méltó változás van ebben az Xcode sablonban, amelyeket könnyen megfigyelhetünk, amelyek
- az új coredatacrud fájl.xcdatamodeld
- az AppDelegate.swift fájl Core Data Stack kóddal
Core Data Stack
a Core Data Stack kód az AppDelegate-en belül.a swift egyértelmű dokumentációval rendelkezik megjegyzések formájában, de röviden: beállítja a persistentContainer-t, és menti az adatokat, ha bármilyen változás történik. Mivel az AppDelegate az első fájl, amely az alkalmazás elindításakor végrehajtja, menthetjük és letölthetjük a kontextust az Alapadatkötegből.
most, hogy modelleztük adatainkat a felhasználói entitásban. Itt az ideje, hogy adjunk néhány rekordot, és mentse el a CoreData
kezdődik import CoreData a viewcontroller.swift
rekordok létrehozása az alapadatokhoz
a rekordok alapadatokhoz való hozzáadásának folyamata a következő feladatokkal jár
- lásd: persistentContainer az appdelegate-től
- kontextus létrehozása a persistentContainer-ből
- entitás létrehozása a User
- új rekord létrehozása ezzel a felhasználói entitással
- állítsa be az egyes kulcsok rekordjainak értékeit
Adatok lekérése
a folyamat a mentett adatok lekérése is nagyon egyszerű. A következő feladattal rendelkezik
- készítse elő az nsfetchrequest típusú kérést az entitás számára (a példánkban szereplő felhasználó)
- ha szükséges, használjon predikátumot a szűrőadatokhoz
- az eredményt a kontextusból
- tömb formájában iterálja át egy tömböt, hogy megkapja az adott kulcs értékét
lekérhetjük a felhasználói entitásunk adatai a következő kód használatával.
frissítés adatok
a frissítési rekord először meg kell letölteni/letölteni adatokat állítmány ugyanaz, mint a fenti adatok lekérése folyamatot. Ezután az alábbiakban néhány lépést kell követni
- készítse elő a kérést predikátummal az entitás számára (a példában szereplő felhasználó)
- rekord lekérése és új érték beállítása kulcs
- és utolsó mentés kontextus ugyanaz, mint az adatok létrehozása.
adatok törlése
a rekord törléséhez először meg kell találnunk az objektumot, amelyet törölni akarunk a fetchRequest segítségével. Ezután kövesse az alábbi néhány lépést a rekord törlése
- készítse elő a kérést predikátummal az entitás számára (a példában szereplő felhasználó)
- rekord lekérése és amelyet törölni akarunk
- és kontextust hozzon létre.delete (objektum) hívás (ref kép csatolt alább)
Nos, ez nem elég az alapadatokhoz, sok összetett dolgot tehetünk az alapadatok nyomon követésével, az adatbázisok Predikátumainak és összetett kapcsolatainak hozzáadásával. Ahogy több alapvető adatot használ, a dolgok összetettebbé válnak.