Pagrindiniai duomenys ir „NSKeyedArchiver“ palyginti su vartotojo numatytaisiais parametrais

Pagrindiniai duomenys, „NSKeyedArchiver“ ir „UserDefaults“ yra trys būdai, kuriais programuotojas gali išlaikyti duomenis tarp programų paleidimo. Nors pagrindiniai duomenys yra šiek tiek sudėtingesni, jie yra naudingi, kai saugomai informacijai reikia struktūros. „NSKeyedArchiver“ yra mažiau sudėtingas ir lėtesnis nei pagrindiniai duomenys, tačiau juo naudotis yra daug paprasčiau. „UserDefaults“ yra paprasčiausias būdas išlaikyti duomenis.

Pagrindiniai duomenys

Pagrindiniai pagrindinių duomenų pranašumai yra šie:

  1. galimybė efektyviai atlikti užklausą
  2. duomenys yra susisteminti taip, kad kiekvienas subjektas turi tam tikrus požymius (mąstymo savybes su konkrečiais tipais) ir gali būti susijęs arba nesusijęs su kitais subjektais per ryšius
  3. automatinis perkėlimas - iš esmės tai reiškia tik tada, kai sukuriate pagrindinių duomenų modelį, sukuriama SQLite duomenų bazė. Jei vėliau pakeisite duomenų modelį (pvz., Prie duomenų modelio pridėsite daugiau atributų), naujas duomenų modelis nesuderinamas su originalia nuolatiniu saugojimo elementu. „Apple“ tvarko šią „migraciją“ iš vienos duomenų modelio versijos į kitą - ačiū „Apple“ !!

Prieš įsigilindami į kodą, pirmiausia peržvelkime keletą apibrėžimų:

  1. „NSPersistentContainer“ yra atsakingas už pagrindinių duomenų skaitymą / rašymą.
  2. „viewContext“ tipo NSManagedObjectContext. Pagrindinio duomenų objekto egzempliorių sukuriate per „NSManagedObjectContext“.

Norėdami integruoti pagrindinius duomenis į savo projektą, pirmiausia turite sukurti pagrindinių duomenų .xcdatamodel failą. Šiame faile jūs apibrėžsite subjektus, įskaitant kiekvieno subjekto atributus, kuriuos norite išlaikyti. Sukūrę .xcdatamodel failą, tada prie projekto pridėkite naują .swift failą, kuriame bus visi katilo plokštės kodai, skirti kodo duomenims. Trys dalykai, kuriuos reikia atkreipti į žemiau esantį kodą -

  1. „NSPeristentContainer“ vardas PRIVALO būti toks pat kaip .xcdatamodel failo.
  2. Sukūriau pavienį ženklą, kad per visą programos eigą informacijos, išsaugotos naudojant pagrindinius duomenis, būtų tik vieną kartą. Jei jums įdomu apskritai pavieniai ženklai / dizaino modeliai, peržiūrėkite šį tinklaraštį.
  3. Nepamirškite importuoti „CoreData“ į .swift failą!

* Jei sukursite naują projektą ir nuspręsite pridėti pagrindinius duomenis prie projekto, aukščiau esantis katilo plokštės kodas bus rodomas programos delegate.

Šansai yra ne tik duomenų kaupimas, bet ir tai, kad norėsite gauti tuos duomenis, kad būtų galima užpildyti jūsų programą kitą kartą paleidus programą. Tarkime, kad sukūrėte subjektą .xcdatamodel faile, pavadinimu „Book“. Kaip matote žemiau esančiame kode, duomenis gaunate naudodami NSFetchRequest. Aš sukūriau masyvą, vadinamą „Books“, kuris yra lygus [Book] (), reiškiančiam „Book Entity“ masyvą. Kiekvieną kartą, kai noriu užpildyti savo programą su šiais išsaugotais duomenimis, raginu naudoti šią funkciją „CoreDataModel.sharedInstance.fetchWorkoutData ()“ ir nustatyti duomenis, kuriuos noriu dirbti su lygiaverčiais „CoreDataModel.sharedInstance.books“.

Informacijos pašalinimas iš pagrindinių duomenų taip pat labai paprastas - viskas, ką jums reikia padaryti, tai surinkti saugomą informaciją, pakartoti ją per masyvą ir ištrinti kiekvieną objektą iš nuolatinio talpyklos. Voila!

Šiame pranešime aš nesigilinau į santykius, tačiau šiame tinklaraštyje pasineriu į santykių kodo rašymą pagrindiniuose duomenyse.

„NSKeyedArchiver“

„NSKeyedArchiver“ suteikia galimybę tiesiogiai bendrauti su disku. Tiksliau, jis nuosekliai keičia NSC kodavimą, kuris yra protokolas dviem būdais:

  1. koduoti (su „acoder“: „NSCoder“)
  2. init? (kod. „aDecoder“: „NSCoder“)

Žemiau pateiktame pavyzdyje mano tikslas yra išlikti daugybe [Asmens]. „Class Person“ turi dvi savybes: „FirstName“ („String“ tipo) ir „LastName“ („String“ tipo). Kaip matote iš žemiau pateikto kodo, klasės asmuo priima ir atitinka NSC kodavimo protokolą.

Duomenų saugojimas ir gavimas per „NSKeyedArchiver“ yra labai paprastas. Kai norėtumėte saugoti informaciją, galite tiesiog paskambinti NSKeyedArchiver.archiveRootObject - tai yra įmontuotas metodas.

Panašiai, kai norite atkurti išlikusius duomenis, galite paskambinti į kitą integruotą funkciją - NSKeyedUnarchiver.unarchiveObject.

Kaip matote, „NSKeyedArchiver“ yra daug paprasčiau įgyvendinti nei pagrindinius duomenis ir yra patraukli galimybė išlikti duomenims.

Vartotojo numatytosios nuostatos

„UserDefaults“ yra klasė, leidžianti paprastai saugoti įvairius duomenų tipus. Pirmiausia jis naudojamas mažiems duomenų kiekiams kaupti, kad programa būtų paleista ar įrenginys paleistas iš naujo. „UserDefaults“ gali laikyti pagrindinius tipus („bool“, „float“, „double“, „int“ ir tt) ir sudėtingesnius tipus („masyvas“, „žodynas“). Nors „UserDefaults“ neturi struktūros, sakoma, kad ji yra greitesnė už pagrindinius duomenis, nes visa tai yra raktų reikšmių poros. Kadangi ji neturi struktūros, naudinga saugoti duomenis, kuriems nereikia struktūros, taigi, vartotojo nuostatas.

Reikėtų atkreipti dėmesį į tai, jei iš naujo nustatysite raktą, išsaugoti duomenys bus pakeisti. KAIP abu klavišai turi būti tie patys - jei vienas klavišas turi visas mažąsias raides, o antrasis klavišas turi vieną didžiąją raidę, esami duomenys nebus pakeisti.

Ačiū už skaitymą ir laimingą kodavimą !!

Nuorodos:

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