Grunngögn vs. NSKeyedArchiver vs vanskil notenda

Kjarnagögn, NSKeyedArchiver og UserDefaults eru þrjár leiðir sem forritari getur varað gögn á milli þess að app ræsist. Þó kjarnagögn séu aðeins flóknari eru þau gagnleg þegar geymdar upplýsingar þurfa uppbyggingu. NSKeyedArchiver er minna flókið og hægari en kjarna gögn, en er miklu einfaldari í notkun. UserDefaults er einfaldasta aðferðin til að viðhalda gögnum.

Grunngögn

Helstu kostir kjarnagagna eru:

  1. getu til að fyrirspurnir duglegur
  2. gögn eru þannig uppbyggð að hver eining hefur ákveðna eiginleika (hugsaðu eiginleika með tilteknum gerðum) og geta eða tengjast kannski ekki öðrum aðilum í tengslum
  3. sjálfvirkar flutningar - í grundvallaratriðum þýðir þetta bara þegar þú býrð til grunngagnamódel, er SQLite gagnagrunnur búinn til. Ef þú breytir gagnamódelinu í kjölfarið (td. Bætir við fleiri eiginleikum við gagnalíkanið) er nýja gagnalíkanið ekki samhæft við upprunalegu viðvarandi verslunina. Apple sér um þessa „flutninga“ frá einni gagnalíkansútgáfu til annarrar fyrir okkur - takk Apple !!

Áður en þú grafar þig inn í kóðann skulum við fara í gegnum nokkrar skilgreiningar:

  1. NSPersistentContainer ber ábyrgð á lestri / ritun til grunngagna.
  2. viewContext af gerðinni NSManagedObjectContext. Þú býrð til dæmi um kjarnagagnahlut í gegnum NSManagedObjectContext.

Til þess að samþætta kjarnagögn í verkefnið þitt verðurðu fyrst að búa til kjarnagögn .xcdatamodel skrá. Innan þessarar skráar skilgreinir þú þá einingar, þar með talið eiginleika hverrar einingar, sem þú vilt halda áfram. Eftir að búið er að búa til .xcdatamodel skrána skaltu bæta við nýrri .swift skrá við verkefnið sem mun fela í sér allan ketilplötukóða fyrir kóða gögn. Þrjú atriði sem ber að hafa í huga í kóðanum hér að neðan -

  1. NSPeristentContainer nafn VERÐUR að vera sama og .xcdatamodel skráin.
  2. Ég bjó til singleton þannig að á öllu námskeiði forritsins er aðeins til einu sinni dæmi um þær upplýsingar sem vistaðar eru í gegnum grunngögn. Ef þú ert forvitinn um singletons / hönnunarmynstur almennt, skoðaðu þetta blogg.
  3. Ekki gleyma að flytja CoreData inn í .swift skrána!

* Ef þú býrð til nýtt verkefni og velur að bæta kjarnagögnum við verkefnið birtist kóðinn fyrir ketilplötuna hér að ofan í App delegated.

Auk þess að vista gögn eru líkurnar á því að þú munt líka vilja sækja þau gögn til að byggja forritið þitt næst þegar forritið ræst. Segjum sem svo að þú hafir stofnað aðila í .xcdatamodel skránni sem kallast „Bók.“ Eins og þú sérð í kóðanum hér að neðan sækir þú gögn með NSFetchRequest. Ég bjó til fylki, kallað „Bækur“, sem er jafnt [Bók] (), sem þýðir fylki bókareiningarinnar. Alltaf þegar ég vil byggja appið mitt með þessum vistuðu gögnum kalla ég til þessa CoreDataModel.sharedInstance.fetchWorkoutData () func og stilla gögnin sem ég vil vinna með samsvarandi CoreDataModel.sharedInstance.books.

Að fjarlægja upplýsingar úr kjarnagögnum er líka mjög einfalt - allt sem þú þarft að gera er að sækja geymdar upplýsingar og endurtaka í gegnum fylkinguna og eyða hverjum hlut úr viðvarandi ílátinu. Voila!

Ég hef ekki kafa í samböndum í þessari færslu, en eftirfarandi blogg kafar í að skrifa kóðann fyrir sambönd í grunngögnum.

NSKeyedArchiver

NSKeyedArchiver veitir getu til að hafa samskipti beint við diskinn. Nánar tiltekið raðsetur það NSCoding, sem er siðareglur með tveimur aðferðum:

  1. umrita í dulmál (með aCoder: NSCoder)
  2. init? (kóðari aDecoder: NSCoder)

Í dæminu hér að neðan er markmið mitt að halda áfram fjölda [Persónu]. Flokkur Persóna hefur tvo eiginleika: fornafn (af gerðinni String) og eftirnafn (af gerðinni String). Eins og þú sérð af kóðanum hér að neðan, samþykkir Class Persóna og er í samræmi við NSCoding siðareglur.

Geymsla og endurheimt gagna í gegnum NSKeyedArchiver er mjög einfalt. Þegar þú vilt geyma upplýsingar geturðu bara hringt í NSKeyedArchiver.archiveRootObject - þetta er innbyggð aðferð.

Á sama hátt, þegar þú vilt sækja viðvarandi gögn, geturðu kallað á aðra innbyggða aðgerð, NSKeyedUnarchiver.unarchiveObject.

Eins og þú sérð er NSKeyedArchiver mun einfaldari í framkvæmd en Core Data og er aðlaðandi valkostur til að viðhalda gögnum.

Vanskil notanda

UserDefaults er flokkur sem gerir kleift að einfalda geymslu á mismunandi gagnategundum. Það er fyrst og fremst notað til að geyma lítið magn af gögnum til að vera viðvarandi á milli þess að app ræsist eða endurræsa tæki. UserDefaults getur geymt grunngerðir (bool, float, double, int, etc) og flóknari gerðir (fylki, orðabók). Þó að UserDefaults hafi enga uppbyggingu er sagt að það sé hraðvirkara en grunngögn vegna þess að allt það er lykilgildapör. Þar sem það hefur enga uppbyggingu er gagnlegt að geyma gögn sem þurfa ekki uppbyggingu - þess vegna óskir notenda.

Eitt sem þarf að hafa í huga er að ef þú endurstillir lykil, þá verður skipt um vistuð gögn. BÚÐIR báðir takkarnir VERÐA SEM MENN - ef einn lykill er með alla lágstafi og annar lykillinn hefur einn hástaf, verður ekki skipt út fyrir núverandi gögn.

Takk fyrir að lesa og ánægð kóðun !!

Tilvísanir:

https://www.hackingwithswift.com/example-code/system/how-to-save-user-settings-using-userdefaults