ຂໍ້ມູນຫຼັກທຽບກັບ NSKeyedArchiver ທຽບກັບຄ່າເລີ່ມຕົ້ນຂອງຜູ້ໃຊ້

ຂໍ້ມູນຫຼັກ, NSKeyedArchiver ແລະ UserDefaults ແມ່ນສາມວິທີທີ່ນັກຂຽນໂປແກຼມສາມາດຍືດຂໍ້ມູນໄດ້ລະຫວ່າງການເປີດຕົວແອັບ app. ເຖິງແມ່ນວ່າຂໍ້ມູນຫຼັກຈະສັບສົນເລັກນ້ອຍກໍ່ຕາມ, ມັນກໍ່ເປັນປະໂຫຍດເມື່ອຂໍ້ມູນທີ່ເກັບຮັກສານັ້ນຕ້ອງມີໂຄງສ້າງ. NSKeyedArchiver ມີຄວາມຊັບຊ້ອນ ໜ້ອຍ ແລະຊ້າກ່ວາຂໍ້ມູນຫຼັກ, ແຕ່ໃຊ້ງ່າຍດາຍຫຼາຍ. UserDefaults ແມ່ນວິທີທີ່ງ່າຍທີ່ສຸດໃນການເກັບຂໍ້ມູນ.

ຂໍ້ມູນຫຼັກ

ຜົນປະໂຫຍດຫຼັກຕໍ່ຂໍ້ມູນຫຼັກປະກອບມີ:

  1. ຄວາມສາມາດໃນການສອບຖາມຢ່າງມີປະສິດທິພາບ
  2. ຂໍ້ມູນມີໂຄງສ້າງທີ່ທຸກ ໜ່ວຍ ງານມີຄຸນລັກສະນະສະເພາະ (ຄິດເຖິງຄຸນລັກສະນະສະເພາະ) ແລະອາດຈະບໍ່ກ່ຽວຂ້ອງກັບ ໜ່ວຍ ງານອື່ນໂດຍຜ່ານການພົວພັນ
  3. ການຍ້າຍຖິ່ນອັດຕະໂນມັດ - ໂດຍພື້ນຖານແລ້ວນີ້ ໝາຍ ຄວາມວ່າເມື່ອທ່ານສ້າງແບບ ຈຳ ລອງຂໍ້ມູນຫຼັກ, ຖານຂໍ້ມູນ SQLite ກໍ່ຖືກສ້າງຂື້ນ. ຖ້າທ່ານປ່ຽນຮູບແບບຂໍ້ມູນຕໍ່ມາ (ຕົວຢ່າງ: ເພີ່ມຄຸນລັກສະນະເພີ່ມເຕີມໃຫ້ກັບຕົວແບບຂໍ້ມູນ), ຮູບແບບຂໍ້ມູນ ໃໝ່ ຈະບໍ່ເຂົ້າກັນກັບຮ້ານທີ່ຍັງຄົງຄ້າງເດີມ. Apple ຈັດການ“ ການເຄື່ອນຍ້າຍ” ນີ້ຈາກຮຸ່ນຂໍ້ມູນໄປຫາອີກລຸ້ນ ໜຶ່ງ ສຳ ລັບພວກເຮົາ - ຂອບໃຈ Apple !!

ກ່ອນທີ່ຈະຂຸດລະຫັດ, ກ່ອນອື່ນ ໝົດ ໃຫ້ອະທິບາຍ ຄຳ ນິຍາມບາງຢ່າງ:

  1. NSPersistentContainer ຮັບຜິດຊອບໃນການອ່ານ / ຂຽນເຖິງຂໍ້ມູນຫຼັກ.
  2. viewContext ຂອງປະເພດ NSManagedObjectContext. ທ່ານສ້າງຕົວຢ່າງຂອງວັດຖຸຂໍ້ມູນຫຼັກໂດຍຜ່ານ NSManagedObjectContext.

ເພື່ອທີ່ຈະລວມເອົາຂໍ້ມູນຫຼັກເຂົ້າໃນໂຄງການຂອງທ່ານ, ທ່ານຕ້ອງສ້າງເອກະສານຫຼັກ .xcdatamodel. ຢູ່ພາຍໃນເອກະສານນີ້ທ່ານຈະ ກຳ ນົດນິຕິບຸກຄົນ, ລວມທັງຄຸນລັກສະນະຂອງແຕ່ລະຫົວ ໜ່ວຍ, ທີ່ທ່ານຕ້ອງການຢາກເຮັດ. ຫລັງຈາກສ້າງເອກະສານ .xcdatamodel, ຫຼັງຈາກນັ້ນຕື່ມເອກະສານ .swift ໃໝ່ ເຂົ້າໃນໂຄງການທີ່ຈະລວມເອົາທັງລະບົບແຜ່ນ boiler ສຳ ລັບຂໍ້ມູນລະຫັດ. ສາມສິ່ງທີ່ຄວນສັງເກດໃນລະຫັດຂ້າງລຸ່ມນີ້ -

  1. ຊື່ NSPeristentContainer ຕ້ອງຄືກັນກັບເອກະສານ .xcdatamodel.
  2. ຂ້ອຍໄດ້ສ້າງ singleton ເພື່ອວ່າຕະຫຼອດຫຼັກສູດທັງ ໝົດ ຂອງແອັບ there ມີພຽງແຕ່ຕົວຢ່າງຂອງຂໍ້ມູນທີ່ບັນທຶກໄວ້ໂດຍຜ່ານຂໍ້ມູນຫຼັກ. ຖ້າທ່ານຢາກຮູ້ກ່ຽວກັບໂສດ / ຮູບແບບການອອກແບບໂດຍທົ່ວໄປ, ໃຫ້ກວດເບິ່ງ blog ນີ້.
  3. ຢ່າລືມ ນຳ ເຂົ້າ CoreData ເຂົ້າໃນແຟ້ມ .swift!

* ຖ້າທ່ານສ້າງໂຄງການ ໃໝ່ ແລະເລືອກທີ່ຈະເພີ່ມຂໍ້ມູນຫຼັກໃນໂຄງການ, ລະຫັດຈານເຕົາໄຟຂ້າງເທິງຈະສະແດງຢູ່ໃນ App Delegate.

ນອກ ເໜືອ ຈາກການປະຫຍັດຂໍ້ມູນແລ້ວ, ໂອກາດທີ່ທ່ານຍັງຕ້ອງການທີ່ຈະດຶງເອົາຂໍ້ມູນນັ້ນໄປໃສ່ແອັບ app ຂອງທ່ານໃນຄັ້ງຕໍ່ໄປທີ່ແອັບ laun ເປີດຕົວ. ໃຫ້ເວົ້າວ່າທ່ານໄດ້ເຮັດຫົວ ໜ່ວຍ ໃດ ໜຶ່ງ ໃນແຟ້ມ .xcdatamodel ທີ່ເອີ້ນວ່າ“ ປື້ມ.” ດັ່ງທີ່ທ່ານເຫັນໃນລະຫັດຂ້າງລຸ່ມ, ທ່ານເກັບເອົາຂໍ້ມູນໂດຍໃຊ້ NSFetchRequest. ຂ້ອຍໄດ້ສ້າງຂບວນ, ເອີ້ນວ່າ“ ປື້ມ”, ເຊິ່ງເທົ່າກັບ [Book] (), ຊຶ່ງ ໝາຍ ຄວາມວ່າອາຄານຂອງຫົວ ໜ່ວຍ ປື້ມ. ເມື່ອໃດກໍ່ຕາມທີ່ຂ້ອຍຕ້ອງການໂປຼແກຼມໂປຼແກຼມຂ້ອຍດ້ວຍຂໍ້ມູນທີ່ບັນທຶກໄວ້ນີ້, ຂ້ອຍຮຽກຮ້ອງໂປແກຼມ CoreDataModel.sharedInstance.fetchWorkoutData () func ແລະຕັ້ງຂໍ້ມູນທີ່ຂ້ອຍຕ້ອງການເຮັດວຽກໃຫ້ເທົ່າກັບ CoreDataModel.sharedInstance.books.

ການຖອດຂໍ້ມູນອອກຈາກຂໍ້ມູນຫຼັກກໍ່ແມ່ນງ່າຍດາຍຫຼາຍ - ສິ່ງທີ່ທ່ານຕ້ອງເຮັດກໍ່ຄືການເອົາຂໍ້ມູນທີ່ເກັບໄວ້ແລະປັບຕົວຜ່ານອາເລແລະລຶບແຕ່ລະວັດຖຸອອກຈາກພາຊະນະທີ່ທົນທານ. Voila!

ຂ້າພະເຈົ້າຍັງບໍ່ທັນໄດ້ລົງເລິກກ່ຽວກັບຄວາມ ສຳ ພັນໃນບົດຄວາມນີ້, ແຕ່ວ່າ blog ຕໍ່ໄປນີ້ຂຽນລົງໃນການຂຽນລະຫັດ ສຳ ລັບຄວາມ ສຳ ພັນໃນຂໍ້ມູນຫຼັກ.

NSKeyedArchiver

NSKeyedArchiver ສະຫນອງຄວາມສາມາດໃນການໂຕ້ຕອບໂດຍກົງກັບແຜ່ນ. ໂດຍສະເພາະ, ມັນ serializes NSCoding, ເຊິ່ງແມ່ນອະນຸສັນຍາທີ່ມີສອງວິທີການ:

  1. encode (ກັບ aCoder: NSCoder)
  2. ເລີ່ມຕົ້ນບໍ? (ຜູ້ຂຽນລະຫັດ: NSCoder)

ໃນຕົວຢ່າງຂ້າງລຸ່ມນີ້, ເປົ້າ ໝາຍ ຂອງຂ້ອຍແມ່ນການຕໍ່ສູ້ກັບບຸກຄົນ. Class Person ມີ 2 ຄຸນລັກສະນະຄື: FirstName (ຂອງ type String) ແລະ lastName (ຂອງ Type String). ດັ່ງທີ່ທ່ານສາມາດເຫັນໄດ້ຈາກລະຫັດຂ້າງລຸ່ມນີ້, ບຸກຄົນໃນຫ້ອງຮຽນຮັບຮອງເອົາແລະປະຕິບັດຕາມອະນຸສັນຍາ NSCoding.

ການເກັບຮັກສາແລະດຶງຂໍ້ມູນຜ່ານ NSKeyedArchiver ແມ່ນກົງໄປກົງມາ. ເມື່ອທ່ານຕ້ອງການເກັບຂໍ້ມູນ, ທ່ານພຽງແຕ່ສາມາດໂທຫາ NSKeyedArchiver.archiveRootObject - ນີ້ແມ່ນວິທີການທີ່ສ້າງຂຶ້ນ.

ເຊັ່ນດຽວກັນ, ເມື່ອທ່ານຕ້ອງການດຶງເອົາຂໍ້ມູນທີ່ຍັງຄົງຄ້າງ, ທ່ານສາມາດໂທຫາໃນ ໜ້າ ທີ່ກໍ່ສ້າງທີ່ມີຢູ່, NSKeyedUnarchiver.unarchiveObject.

ດັ່ງທີ່ທ່ານເຫັນ, NSKeyedArchiver ແມ່ນງ່າຍດາຍຫຼາຍທີ່ຈະຈັດຕັ້ງປະຕິບັດຫຼາຍກ່ວາ Core Data ແລະເປັນຕົວເລືອກທີ່ ໜ້າ ສົນໃຈໃນການສືບຕໍ່ຂໍ້ມູນ.

ຄ່າເລີ່ມຕົ້ນຂອງຜູ້ໃຊ້

UserDefaults ແມ່ນຊັ້ນທີ່ອະນຸຍາດໃຫ້ຈັດເກັບຂໍ້ມູນປະເພດຂໍ້ມູນທີ່ແຕກຕ່າງກັນງ່າຍໆ. ມັນຖືກນໍາໃຊ້ຕົ້ນຕໍໃນການເກັບຮັກສາຂໍ້ມູນນ້ອຍໆເພື່ອຄົງຢູ່ລະຫວ່າງການເປີດຕົວແອັບ or ຫຼືການເລີ່ມຄືນ ໃໝ່ ຂອງອຸປະກອນ. UserDefaults ສາມາດເກັບຮັກສາປະເພດພື້ນຖານ (bool, float, double, int, etc) ແລະປະເພດທີ່ສັບສົນກວ່າເກົ່າ (array, dictionary). ເຖິງແມ່ນວ່າ UserDefaults ບໍ່ມີໂຄງສ້າງ, ແຕ່ຖືກກ່າວວ່າໄວກວ່າຂໍ້ມູນຫຼັກເພາະວ່າມັນທັງ ໝົດ ແມ່ນຄູ່ທີ່ມີຄ່າ ສຳ ຄັນ. ເນື່ອງຈາກມັນບໍ່ມີໂຄງສ້າງ, ມັນມີປະໂຫຍດໃນການເກັບຂໍ້ມູນທີ່ບໍ່ຕ້ອງການໂຄງສ້າງ - ເພາະສະນັ້ນ, ຄວາມມັກຂອງຜູ້ໃຊ້.

ສິ່ງ ໜຶ່ງ ທີ່ຄວນສັງເກດແມ່ນຖ້າທ່ານຕັ້ງຄີ, ຂໍ້ມູນທີ່ບັນທຶກຈະຖືກປ່ຽນແທນ WHEVER ທັງສອງປຸ່ມຕ້ອງເປັນແບບດຽວກັນ - ຖ້າປຸ່ມ ໜຶ່ງ ມີຕົວອັກສອນນ້ອຍທັງ ໝົດ ແລະຄີທີສອງມີຈົດ ໝາຍ ໃຫຍ່, ຂໍ້ມູນທີ່ມີຢູ່ຈະບໍ່ຖືກປ່ຽນແທນ.

ຂໍຂອບໃຈ ສຳ ລັບການອ່ານແລະຂຽນລະຫັດທີ່ມີຄວາມສຸກ !!

ເອກະສານອ້າງອີງ:

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