Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> iOS

NSUserDefaults में कस्टम ऑब्जेक्ट संग्रहीत करना - आर्काइविंग/अनआर्काइविंग


इस लेख में हम सीखेंगे कि हमारे एप्लिकेशन में कस्टम ऑब्जेक्ट को कैसे संग्रहीत किया जाए, लेकिन इससे पहले कि आप कस्टम ऑब्जेक्ट को संग्रहीत करना सीखें, आइए देखें कि कस्टम ऑब्जेक्ट क्या हैं?

एक कस्टम ऑब्जेक्ट कोई भी क्लास या संरचना या कोई अन्य डेटा है जो Int, Double, String आदि जैसे नेटिव डेटा प्रकार नहीं है। NSUserDefaults में डेटा संग्रहीत करना एक तीन-चरणीय प्रक्रिया है।

कस्टम ऑब्जेक्ट बनाना

हम एक कस्टम क्लास Person बनाएंगे जिसमें एक age वेरिएबल और name वेरिएबल होगा।

class Person: NSObject, NSCoding {
    var name: String
    var age: Int
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
    required convenience init(coder aCoder: NSCoder) {
        let name = aCoder.decodeObject(forKey: "name") as! String
        let age = aCoder.decodeInteger(forKey: "age")
        self.init(name: name, age: age)
    }
    func encode(with aCoder: NSCoder) {
        aCoder.encode(age, forKey: "age")
        aCoder.encode(name, forKey: "name")
    }
}

कस्टम ऑब्जेक्ट को एन्कोड करना

इस चरण में हम Person ऑब्जेक्ट की एक सरणी बनाएंगे, इसे people कहेंगे और यादृच्छिक डेटा के साथ इनिशियलाइज़ करेंगे। एक बार जब हम वह ऑब्जेक्ट बनाते हैं तो हम इस ऑब्जेक्ट को आर्काइव करने के लिए NSKeyedArchiver का उपयोग करेंगे और बाद में UserDefaults में संग्रहीत करेंगे।

let people = [
    Person.init(name: "P1", age: 1),
    Person.init(name: "P2", age: 2),
    Person.init(name: "P3", age: 3),
]
let encoded = NSKeyedArchiver.archivedData(withRootObject: people)
UserDefaults.standard.set(encoded, forKey: "encodedData")

अब हमने आर्काइव्ड ऑब्जेक्ट को कोर डेटा में सफलतापूर्वक सहेज लिया है, अब समय है कि हम इसे अनआर्काइव करें और प्रिंट करें।

कस्टम ऑब्जेक्ट को डिकोड करना

NSKeyedArchiver के समान हमारे पास NSKeyedUnarchiver है जिसका उपयोग हम इस ऑब्जेक्ट को अनआर्काइव करने के लिए करेंगे।

let decoded = UserDefaults.standard.object(forKey: "encodedData") as! Data
let decodedPeople = NSKeyedUnarchiver.unarchiveObject(with: decoded) as! [Person]

अब यह "decodedPeople" ऑब्जेक्ट दूसरे चरण में बनाए गए ऑब्जेक्ट को रखता है।

हम उस ऑब्जेक्ट के साथ वांछित ऑपरेशन कर सकते हैं। अब देखते हैं कि ViewController फ़ाइल कैसी दिखती है:

import UIKit
class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        let people = [
            Person.init(name: "P1", age: 1),
            Person.init(name: "P2", age: 2),
            Person.init(name: "P3", age: 3),
        ]
        let encoded = NSKeyedArchiver.archivedData(withRootObject: people)
        UserDefaults.standard.set(encoded, forKey: "encodedData")
        print("data decoded, encoding now")
        let decoded = UserDefaults.standard.object(forKey: "encodedData") as! Data
        let decodedPeople = NSKeyedUnarchiver.unarchiveObject(with: decoded) as! [Person]
        print(decodedPeople)
    }
}

अब अंतिम प्रिंट स्टेटमेंट पर ब्रेकपॉइंट डालें और यह कोड चलाएं, जब निष्पादित हो तो यह कमांड चलाएं:

po decodedPeople.first?.name

जिसका परिणाम होगा:

Optional<String> - some: "P1"
  1. एंड्रॉइड में JSON वैल्यूज को ऑब्जेक्ट में कैसे स्टोर करें एंड्रॉइड में JSON वैल्यूज को ऑब्जेक्ट में कैसे स्टोर करें

    Volley JSON डेटा को कस्टम ऑब्जेक्ट में मैप करना यह उदाहरण दिखाता है कि Volley से प्राप्त JSON प्रतिक्रिया को पार्स करके कस्टम UserInfo ऑब्जेक्ट में कैसे स्टोर करें। चरण 1-2: प्रोजेक्ट और लेआउट मानक सेटअप। चरण 3: MainActivity.java package com.example.myapplication; import android.os.Build; import

  1. कस्टम ऑब्जेक्ट्स को Serializable कैसे बनाएं? कस्टम ऑब्जेक्ट्स को Serializable कैसे बनाएं?

    कस्टम ऑब्जेक्ट्स को Serializable बनाना यह उदाहरण दर्शाता है कि कस्टम ऑब्जेक्ट्स को Serializable कैसे बनाया जाए। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project पर जाएं और आवश्यक विवरण भरकर एक नया प्रोजेक्ट बनाएं। चरण 2: res/layout/activity_main.xml में कोड जोड़ें <?xml version=

  1. कस्टम ऑब्जेक्ट्स को Parcelable कैसे बनाएं? कस्टम ऑब्जेक्ट्स को Parcelable कैसे बनाएं?

    कस्टम ऑब्जेक्ट्स को Parcelable बनाना यह उदाहरण दर्शाता है कि कस्टम ऑब्जेक्ट्स को Parcelable कैसे बनाया जाए। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में File → New Project पर जाएं और आवश्यक विवरण भरकर एक नया प्रोजेक्ट बनाएं। चरण 2: res/layout/activity_main.xml में कोड जोड़ें <?xml version=1.0