Core Data vs. NSKeyedArchiver vs İstifadəçi Defoltları

Əsas məlumatlar, NSKeyedArchiver və UserDefaults, bir proqramçının tətbiq başlatmaları arasındakı məlumatları davam etdirməsinin üç yolu. Əsas məlumatlar biraz daha mürəkkəb olmasına baxmayaraq, saxlanılan məlumatlar struktur tələb etdikdə faydalıdır. NSKeyedArchiver əsas məlumatlara nisbətən daha az mürəkkəb və yavaşdır, lakin istifadə etmək çox sadədir. UserDefaults, məlumatları qorumaq üçün ən sadə üsuldur.

Əsas məlumat

Əsas məlumatların əsas faydaları bunlardır:

  1. səmərəli sorğu etmək bacarığı
  2. Məlumat elə qurulmuşdur ki, hər bir müəssisə müəyyən xüsusiyyətlərə malikdir (müəyyən tipli düşünmə xüsusiyyətləri) və əlaqələr vasitəsilə digər qurumlara aid ola bilər və ya ola bilməz.
  3. avtomatik köçürmələr - əsaslı bir məlumat modeli yaratdığınız zaman bir SQLite verilənlər bazası yaradıldığını göstərir. Daha sonra məlumat modelini dəyişdirsəniz (məsələn, məlumat modelinə daha çox atribut əlavə edin), yeni məlumat modeli orijinal davamlı mağaza ilə uyğun deyil. Apple bu "miqrasiyanı" bir məlumat modeli versiyasından digərinə bizim üçün idarə edir - təşəkkür Apple!

Kodu tapmadan əvvəl əvvəlcə müəyyən təriflərdən keçək:

  1. Bu NSPersistentContainer əsas məlumatları oxumaq / yazmaq üçün məsuliyyət daşıyır.
  2. NSManagedObjectContext növünün mətni. NSManagedObjectContext vasitəsilə əsas məlumat obyekti nümunəsini yaradırsınız.

Əsas məlumatları layihənizə birləşdirmək üçün əvvəlcə bir əsas məlumat .xcdatamodel faylı yaratmalısınız. Bu fayl içərisində davam etmək istədiyiniz varlıqları, o cümlədən hər bir şəxsiyyətin atributlarını təyin edəcəksiniz. .Xcdatamodel faylı yaratdıqdan sonra, kod məlumatları üçün bütün qazan boşqab kodunu özündə cəmləşdirəcək layihəyə yeni .swift faylı əlavə edin. Aşağıdakı kodu qeyd etmək üçün üç şey -

  1. NSPeristentContainer adı .xcdatamodel faylı ilə eyni olmalıdır.
  2. Mən bir singleton yaratdım ki, tətbiqetmənin bütün dövründə əsas məlumatlar vasitəsilə saxlanılan məlumatların yalnız bir misalı var. Ümumiyyətlə, singletons / dizayn nümunələri ilə maraqlanırsınızsa, bu bloga baxın.
  3. CoreData'yı .swift faylına daxil etməyi unutmayın!

* Yeni bir layihə yaratsanız və layihəyə əsas məlumatlar əlavə etməyi seçsəniz, yuxarıdakı qazan boşqab kodu App Nümayəndəsində göstəriləcəkdir.

Verilənləri qənaət etməkdən əlavə, əlavələr növbəti dəfə tətbiqinizi işə saldıqda tətbiqinizi doldurmaq üçün həmin məlumatları almaq istəyəcəksiniz. Deyək ki, .xcdatamodel faylında "Kitab" adlı bir varlıq yaratdınız. Aşağıdakı kodda gördüyünüz kimi NSFetchRequest istifadə edərək məlumat alırsınız. [Kitab] () -a bərabər olan, Kitab varlığının bir sıra mənasını verən "Kitablar" adlı bir sıra yaratdım. Tətbiqimi bu yadda qalan məlumatlarla doldurmaq istədikdə bu CoreDataModel.sharedInstance.fetchWorkoutData () funksiyasına zəng vururam və CoreDataModel.sharedInstance.books ilə bərabər işləmək istədiyim məlumatları təyin edirəm.

Məlumatları əsas məlumatlardan çıxarmaq da çox sadədir - saxlanılan məlumatları massiv vasitəsilə təkrarlamaq və hər bir obyekti davamlı konteynerdən silmək lazımdır. Voila!

Bu yazıdakı əlaqələrə toxunmamışam, amma aşağıdakı blog əsas məlumatlardakı münasibətlər kodunu yazmağa can atır.

NSKeyedArchiver

NSKeyedArchiver birbaşa disklə qarşılıqlı əlaqə yaratmaq imkanı verir. Xüsusilə, iki üsulla protokol olan NSCoding'u seriyələndirir:

  1. kodlaşdır (aCoder ilə: NSCoder ilə)
  2. tashabb? (kodçu aDecoder: NSCoder)

Aşağıdakı nümunədə məqsədim [Şəxs] bir sıra davam etməkdir. Sinif adamı iki xüsusiyyətə malikdir: ilk ad (tip String) və son ad (tip String). Aşağıdakı koddan göründüyü kimi, sinif adamı NSCoding protokolunu qəbul edir və ona uyğun gəlir.

NSKeyedArchiver vasitəsilə məlumatların saxlanması və alınması çox sadədir. Məlumat saxlamaq istədiyiniz zaman yalnız NSKeyedArchiver.archiveRootObject-a zəng edə bilərsiniz - bu daxili bir üsuldur.

Eynilə, davamlı məlumatları əldə etmək istədikdə, başqa bir daxili funksiyaya - NSKeyedUnarchiver.unarchiveObject-a zəng edə bilərsiniz.

Gördüyünüz kimi, NSKeyedArchiver Core Data-dan daha asan həyata keçirilməkdədir və məlumatları qorumaq üçün cəlbedici bir seçimdir.

İstifadəçi Defoltları

UserDefaults, müxtəlif məlumat növlərinin sadə saxlanmasına imkan verən bir sinifdir. Əvvəlcə tətbiq başlaması və ya cihaz yenidən başlaması arasında davam etmək üçün az miqdarda məlumat saxlamaq üçün istifadə olunur. UserDefaults əsas növləri (bool, float, double, int və s.) Və daha mürəkkəb növləri (serial, lüğət) saxlaya bilər. UserDefaults heç bir quruluşa malik olmasa da, əsas məlumatlardan daha sürətli olduğu deyilir, çünki bunların hamısı əsas dəyər cütləridir. Heç bir quruluşa malik olmadığından, quruluş tələb etməyən məlumatları saxlamaq faydalıdır - deməli istifadəçi üstünlükləri.

Diqqəti çəkən bir şey, bir açarı sıfırlasanız, qeyd edilmiş məlumatlar əvəz olunarsa HƏR iki düymənin eyni olması lazımdır - bir düymənin hamısının kiçik hərfləri, ikinci açarda isə böyük hərf varsa, mövcud məlumatlar dəyişdirilməyəcəkdir.

Oxuduğunuz və xoşbəxt kodlaşdırdığınız üçün təşəkkür edirik!

İstinadlar:

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