Հիմնական տվյալներն ընդդեմ NSKeyedArchiver ընդդեմ օգտվողի կանխադրվածությունների

Հիմնական տվյալները, NSKeyedArchiver- ը և UserDefaults- ը երեք եղանակներ են, որոնց միջոցով ծրագրավորողը կարող է պահպանել տվյալները ծրագրի գործարկման միջև: Թեև հիմնական տվյալները մի փոքր ավելի բարդ են, բայց օգտակար է այն դեպքում, երբ պահված տեղեկատվությունը կառուցվածք է պահանջում: NSKeyedArchiver- ը հիմնական տվյալների համեմատ պակաս բարդ է և դանդաղ, բայց օգտագործումը շատ ավելի պարզ է: UserDefaults- ը տվյալների պահպանման ամենապարզ մեթոդն է:

Հիմնական տվյալներ

Հիմնական տվյալների հիմնական առավելությունները ներառում են.

  1. արդյունավետորեն հարցնելու ունակություն
  2. տվյալները կառուցված են այնպես, որ յուրաքանչյուր կազմակերպություն ունի որոշակի ատրիբուտներ (մտածել հատկություններ հատուկ տեսակների հետ) և կարող է կամ չի կարող առնչվել այլ սուբյեկտների հետ հարաբերությունների միջոցով:
  3. ավտոմատ միգրացիա. հիմնականում սա նշանակում է, երբ հիմնական տվյալների մոդել եք ստեղծում, ստեղծվում է SQLite տվյալների բազա: Եթե ​​հետագայում փոխեք տվյալների մոդելը (օրինակ ՝ տվյալների մոդելին ավելացրեք ավելի շատ ատրիբուտներ), տվյալների նոր մոդելը համատեղելի չէ բնօրինակ կայուն խանութի հետ: Apple- ը այս «գաղթը» տեղափոխում է տվյալների մոդելի մեկ տարբերակից մյուսը մեզ համար `շնորհակալություն Apple- ին:

Նախքան կոդն ընկնելը, նախ եկեք որոշ սահմանումներ անցնենք.

  1. NSPersistentContainer- ը պատասխանատու է հիմնական տվյալների կարդալու / գրելու համար:
  2. տեսեք NSManagedObjectContext տիպի տեսանյութի համադրություն: Դուք ստեղծում եք հիմնական տվյալների օբյեկտի օրինակ NSManagedObjectContext- ի միջոցով:

Հիմնական ծրագրերը ձեր նախագծում ինտեգրելու համար նախ պետք է ստեղծեք հիմնական տվյալների .xcdatamodel ֆայլ: Այս ֆայլի միջոցով դուք կսահմանեք այն սուբյեկտներին, ներառյալ յուրաքանչյուր կազմակերպության ատրիբուտները, որոնք ցանկանում եք պահպանել: .Xcdatamodel ֆայլը ստեղծելուց հետո այնուհետև նախագծին ավելացրեք նոր .siftift ֆայլ, որը կներառի կաթսայատան բոլոր ափսեները ծածկագրային տվյալների համար: Երեք բան պետք է նշել ներքևի կոդում.

  1. NSPeristentContainer անվանումը ՊԵՏՔ է լինի նույնը, ինչ .xcdatamodel ֆայլը:
  2. Ես ստեղծեցի սինգլետոն, որպեսզի հավելվածի ողջ ընթացքում գոյություն ունենա հիմնական տվյալների միջոցով պահպանված տեղեկատվության միայն մեկ անգամ: Եթե ​​դուք ընդհանուր առմամբ հետաքրքրվում եք singletons / դիզայնի նախշերով, ստուգեք այս բլոգը:
  3. Մի մոռացեք CoreData- ն ներմուծել .siftift ֆայլ:

* Եթե դուք ստեղծում եք նոր նախագիծ և ընտրում եք նախագծին հիմնական տվյալներ ավելացնել, վերը նշված կաթսայի ափսեի ծածկագիրը կհայտնվի App Delegate- ում:

Բացի տվյալների պահպանումից, հավանականությունն այն է, որ դուք նույնպես կցանկանաք վերցնել այդ տվյալները ՝ հավելվածը գործարկելու հաջորդ անգամ բնակեցնելու համար ձեր ծրագիրը: Եկեք ասենք, որ դուք ստեղծել եք կազմակերպություն «գիրք» անվանումով .xcdatamodel ֆայլում: Ինչպես տեսնում եք ստորև նշված կոդով, դուք վերցնում եք տվյալներ ՝ օգտագործելով NSFetchRequest: Ես ստեղծեցի զանգված, որը կոչվում է «Գրքեր», որը հավասար է [Գիրքին] (), որը նշանակում է Գրքերի սուբյեկտի զանգված: Երբ ուզում եմ իմ ծրագիրը ներբեռնել այս պահված տվյալներով, ես զանգում եմ այս CoreDataModel.sharedInstance.fetchWorkoutData () գործառույթին և սահմանում եմ այն ​​տվյալները, որոնք ցանկանում եմ աշխատել `հավասար CoreDataModel.sharedInstance.books- ին:

Հիմնական տեղեկատվությունից հիմնական տեղեկատվությունը հեռացնելը նույնպես շատ պարզ է. Բոլորը, որ դուք պետք է անեք, պահպանում եք պահված տեղեկատվությունը և կրկնում զանգվածի միջոցով, և յուրաքանչյուր օբյեկտը հեռացնում է կայուն տարաներից: Voila!

Ես չեմ գրավել հարաբերությունների մեջ այս գրառման մեջ, բայց հետևյալ բլոգը ընկղմվում է հիմնական տվյալների մեջ եղած հարաբերությունների համար կոդ գրելուն:

NSKeyedArchiver

NSKeyedArchiver- ն ապահովում է սկավառակի հետ անմիջականորեն փոխազդելու հնարավորություն: Մասնավորապես, այն սերիականացնում է NSCoding- ը, որը երկու մեթոդով արձանագրություն է.

  1. կոդավորումը (aCoder- ով ՝ NSCoder)
  2. նախաձեռնում? (ծածկագրիչ aDecoder: NSCoder)

Ստորև բերված օրինակում, իմ նպատակը [անձի] զանգվածին մնալն է: Class Person- ը ունի երկու հատկություն ՝ firstName (տողի տողի) և ազգանունը (տողի տիպի): Ինչպես տեսնում եք ստորև նշված կոդից, Class Person- ը որդեգրում և համապատասխանում է NSCoding արձանագրությանը:

NSKeyedArchiver- ի միջոցով տվյալների պահպանումն ու որոնումը շատ պարզ է: Երբ ցանկանում եք տեղեկատվություն պահել, պարզապես կարող եք զանգահարել NSKeyedArchiver.archiveRootObject - սա ներկառուցված մեթոդ է:

Նմանապես, երբ ուզում եք առկայ տվյալներ ստանալ, կարող եք զանգահարել ներկառուցված մեկ այլ գործառույթ ՝ NSKeyedUnarchiver.unarchiveObject:

Ինչպես տեսնում եք, NSKeyedArchiver- ը իրականացնելու համար շատ ավելի պարզ է, քան Core Data- ը և տվյալների պահպանման գրավիչ տարբերակ է:

Օգտագործողի կանխադրված

UserDefaults- ը դաս է, որը թույլ է տալիս հեշտությամբ պահել տարբեր տեսակի տեսակներ: Այն հիմնականում օգտագործվում է փոքր քանակությամբ տվյալների պահելու համար `ծրագրի գործարկման կամ սարքի վերագործարկման միջև եղած միջև: UserDefaults- ը կարող է պահպանել հիմնական տիպերը (bool, float, double, int, և այլն) և ավելի բարդ տեսակներ (զանգված, բառարան): Թեև UserDefaults- ը չունի որևէ կառուցվածք, այնուամենայնիվ, ասվում է, որ ավելի արագ է, քան հիմնական տվյալները, քանի որ այն ամենը հիմնական արժեքային զույգ է: Քանի որ այն չունի կառուցվածք, օգտակար է պահել այն տվյալները, որոնք կառուցվածք չեն պահանջում, հետևաբար ՝ օգտագործողների նախասիրությունները:

Պետք է նշել, որ եթե ստեղնը վերակայեք, ապա պահված տվյալները կփոխարինվեն ԻՆՉՊԵՍ երկու բանալին էլ ՊԵՏՔ է դառնան նույնը. Եթե մեկ բանալին ունի բոլոր փոքր տառերը, իսկ երկրորդ բանալին ունի մեկ մեծ տառ, գոյություն ունեցող տվյալները չեն փոխարինվի:

Շնորհակալություն կարդալու և ուրախ կոդավորելու համար !!

Հղումներ.

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