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

NSUserDefaults में कस्टम ऑब्जेक्ट्स को कैसे स्टोर करें?

<घंटा/>

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

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

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

हम एक कस्टम वर्ग व्यक्ति बनाएंगे जिसमें एक आयु चर और नाम चर होगा।

<पूर्व>वर्ग व्यक्ति:NSObject, NSCoding { var नाम:String var आयु:Int init (नाम:String, आयु:Int) {self.name =name self.age =आयु} आवश्यक सुविधा init (कोडर aCoder:NSCoder) { चलो नाम =aCoder.decodeObject (के लिए:"नाम") के रूप में! स्ट्रिंग उम्र =aCoder.decodeInteger (forKey:"आयु") self.init (नाम:नाम, आयु:आयु)} func एन्कोड (एकोडर के साथ:NSCoder) { acoder.encode (आयु, forKey:"आयु") एककोडर। encode(name,forKey:"name") }}

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

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

चलो लोग =[ Person.init (नाम:"P1", आयु:1), Person.init (नाम:"P2", आयु:2), Person.init (नाम:"P3", आयु:3 ),] एन्कोडेड होने दें =NSKeyedArchiver.archivedData(withRootObject:People)UserDefaults.standard.set(encoded, forKey:"encodedData")

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

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

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

डिकोडेड =UserDefaults.standard.object(forKey:"encodedData") के रूप में! डेटालेट डिकोडेड पीपल =NSKeyedUnarchiver.unarchiveObject (साथ:डिकोडेड) as! [व्यक्ति]

अब इस "डीकोडेडपीपल" ऑब्जेक्ट में वह ऑब्जेक्ट है जिसे हमने दूसरे चरण में बनाया है।

हम वस्तु के साथ वांछित संचालन कर सकते हैं। अब देखते हैं कि ViewController फ़ाइल कैसी दिखती है;

<पूर्व>आयात करें UIKitclass ViewController:UIViewController { ओवरराइड func viewDidLoad() {super.viewDidLoad() // दृश्य लोड करने के बाद कोई अतिरिक्त सेटअप करें, आमतौर पर एक निब से। लोगों को जाने दें =[ Person.init (नाम:"P1", आयु:1), Person.init (नाम:"P2", आयु:2), Person.init (नाम:"P3", आयु:3), ] एन्कोडेड होने दें =NSKeyedArchiver.archivedData(withRootObject:People) UserDefaults.standard.set (एन्कोडेड, forKey:"encodedData") प्रिंट ("डेटा डिकोड किया गया, अब एन्कोडिंग") डिकोड होने दें =UserDefaults.standard.object (forKey:"encodedData") जैसा! डेटा को डीकोड किया गया लोग =NSKeyedUnarchiver.unarchiveObject (साथ:डिकोड किया गया) के रूप में! [व्यक्ति] प्रिंट (डीकोडेड पीपल) }}

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

po decodedPeople.first?.name

जिसके परिणामस्वरूप

वैकल्पिक<स्ट्रिंग>- कुछ :"P1"

अंत में यह ऐसा दिखता है।

NSUserDefaults में कस्टम ऑब्जेक्ट्स को कैसे स्टोर करें?


  1. एंड्रॉइड में ऑब्जेक्ट में जेसन वैल्यू कैसे स्टोर करें?

    यह उदाहरण एंड्रॉइड में ऑब्जेक्ट में जेसन वैल्यू को स्टोर करने के तरीके के बारे में प्रदर्शित करता है। चरण 1 - एंड्रॉइड स्टूडियो में एक नया प्रोजेक्ट बनाएं, फाइल ⇒ न्यू प्रोजेक्ट पर जाएं और एक नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें। चरण 2 - निम्न कोड को res/layout/activity_main.xml में जो

  1. मैं अपनी कस्टम वस्तुओं को सीरियल करने योग्य कैसे बना सकता हूं?

    यह उदाहरण दिखाता है कि मैं अपने कस्टम ऑब्जेक्ट्स को सीरियल करने योग्य कैसे बना सकता हूं चरण 1 - एंड्रॉइड स्टूडियो में एक नया प्रोजेक्ट बनाएं, फाइल ⇒ न्यू प्रोजेक्ट पर जाएं और एक नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें। चरण 2 - निम्न कोड को res/layout/activity_main.xml में जोड़ें। उपरोक

  1. मैं अपनी कस्टम वस्तुओं को पार्सल करने योग्य कैसे बना सकता हूं?

    यह उदाहरण दर्शाता है कि मैं अपनी कस्टम वस्तुओं को पार्सल करने योग्य कैसे बना सकता हूं चरण 1 - एंड्रॉइड स्टूडियो में एक नया प्रोजेक्ट बनाएं, फाइल ⇒ न्यू प्रोजेक्ट पर जाएं और एक नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें। चरण 2 - निम्न कोड को res/layout/activity_main.xml में जोड़ें। उपरोक्त