কম্পিউটার টিউটোরিয়াল

NSUserDefaults-এ কাস্টম অবজেক্ট স্টোর করা


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")

আমরা সফলভাবে আর্কাইভড অবজেক্ট কোর ডেটায় (UserDefaults) সেভ করলাম, এখন আনআর্কাইভ করে প্রিন্ট করব।

৩. কাস্টম অবজেক্ট ডিকোড করা

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) 
    } 
}

লাস্ট প্রিন্ট স্টেটমেন্টে ব্রেকপয়েন্ট দিয়ে রান করুন,.Execute করুন:

po decodedPeople.first?.name

ফলাফল:

Optional - some : "P1"

শেষে এরা যেন দেখাবে:

NSUserDefaults-এ কাস্টম অবজেক্ট স্টোর করা

  1. আইফোনে কাস্টম রিংটন সেট করার পদ্ধতি

  2. এন্ড্রয়েডে JSON মান অবজেক্টে সংরক্ষণ করার উপায়

  3. Android-এ কাস্টম অবজেক্টকে Serializable করার উপায়

  4. Android-এ কাস্টম অবজেক্টকে Parcelable করার উপায়