আইওএস NSUserDefaults টিউটোরিয়াল

একটি অ্যাপ বন্ধ করার পরও অ্যাপ ডেটা গুলো যেন হারিয়ে না যায়, তার জন্য ডেটা গুলো স্টোর করে রাখতে হয়। বেশি ডেটা হলে আমরা ডেটাবেজ ব্যবহার করতে পারি। কিন্তু অল্প কিছু ডেটা যেমন একটা গেমের হাই স্কোর, অ্যাপে সেট করা ইউজারের ভিবিন্ন সেটিংস এসব আমরা স্টোর করার জন্য ব্যবহার করতে পারি NSUserDefaults। কিভাবে NSUserDefaults এ কিছু ডেটা রাখতে হয়, কিভাবে NSUserDefaults থেকে ডেটা বের করা যায়, তাই দেখব। তার জন্য প্রথমেই একটা প্রজেক্ট তৈরি করে নিব। যেমন NSUserDefaults Demo.

স্টোরি বোর্ডে একটা টেক্সট ফিল্ড, দুইটা বাটন এবং একটা লেভেল যুক্ত করব।

NSUserDefaults Demo

টেক্সট ফিল্ডে কিছু লেখার জন্য। Save বাটনে ক্লিক করলে টেক্সট ফিল্ড এর ডেটা গুলো NSUserDefaults এ সেভ হবে। এবং Show বাটনে ক্লিক করলে লেভেলে ঐ ডেটাটা দেখাবে। উপরের মত করে বা নিজের মত করে ফিল্ড গুলো যুক্ত করি। এরপর ভিউ কন্ট্রোলারের সাথে যুক্ত করি।

 

বাটন দুইটির জন্য দুইটা একশন যুক্ত করি। যেমন Save বাটনে ক্লিক করলে ডেটা সেভ হবে। তার জন্য লিখতে হবেঃ

NSUserDefaults.standardUserDefaults().setObject(textField.text, forKey: "text")
        

মানে একটা ডেটা সেট করার জন্য ঐ ডেটাটা দিতে হবে, ডেটার সাথে দিতে হবে একটা key।

ডেটা বের করার জন্য লিখতে হবে এভাবেঃ

labelField.text =  NSUserDefaults.standardUserDefaults().objectForKey("text") as? String
      

যে key দিয়ে আমরা ডেটা সেভ করেছি, ঐ key টা পাস করতে হবে। অনেক সহজ না?

সম্পুর্ণ ViewControlar.swift:

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var textField: UITextField!
    @IBOutlet weak var labelField: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    @IBAction func actionSave(sender: AnyObject) {
        
         NSUserDefaults.standardUserDefaults().setObject(textField.text, forKey: "text")
        
        
        
    }
    
    @IBAction func actionRetrieve(sender: AnyObject) {
        
        labelField.text =  NSUserDefaults.standardUserDefaults().objectForKey("text") as? String
       
        
    }


}

Leave a Reply