অ্যান্ড্রয়েড ভাগ করা পছন্দসমূহের জন্য আইওএস সমতুল্য


105

আমি আইওএস-এ একটি অ্যান্ড্রয়েড অ্যাপ পোর্ট করছি, প্রতিবার একটি স্তর সম্পূর্ণ হওয়ার পরে অ্যান্ড্রয়েডে ভাগ করা পছন্দগুলি আমি ব্যবহার করেছি।

এইভাবে ব্যবহারকারী যখন অ্যাপটিতে ফিরে আসবে তখন তারা দেখতে পাবে যে তারা 3 বা যে কোনও কিছুতে রয়েছে level

আইওএস-এ কি একই রকম প্রক্রিয়া আছে? বা আমাকে কোনও অ্যাপ্লিকেশন নির্দিষ্ট ফাইলটিতে ম্যানুয়ালি লিখতে হবে?

যদি তা হয় তবে আমি কেবল আমার অ্যাপ্লিকেশনটিতে দৃশ্যমান ফাইলগুলিতে কীভাবে লিখব?

ধন্যবাদ।


1
আমি অনুমান করি আইওএস-এ এর নিকটতম জিনিসটি হ'ল এনএসউজারডেফাল্টস । এবং এখানে কীভাবে সংরক্ষণ এবং পুনরুদ্ধার করা যায় তার একটি সহজ উদাহরণ।
তারেক হাল্লাক

উত্তর:


203

এনএসইউসারডেফাল্টস ব্যবহার করুন : - নোট করুন যে এটি আপনার যেমন উল্লিখিত বর্তমান স্তরের মতো ছোট ছোট বিটগুলির জন্য is এটির অপব্যবহার করবেন না এবং এটি একটি বৃহত ডাটাবেস হিসাবে ব্যবহার করবেন না, কারণ আপনার অ্যাপ্লিকেশনটি খোলার সময় এটি মেমরিতে লোড হয়ে যায়, আপনার এটির কিছু দরকার কিনা বা না (আপনার অ্যাপের অন্যান্য অংশগুলিও এটি ব্যবহার করবে)।

উদ্দেশ্য গ:

পাঠ:

NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults];

NSString *currentLevelKey = @"currentlevel";

if ([preferences objectForKey:currentLevelKey] == nil)
{
    //  Doesn't exist.
}
else
{
    //  Get current level
    const NSInteger currentLevel = [preferences integerForKey:currentLevelKey];
}

লেখা:

NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults];

NSString *currentLevelKey = @"currentlevel";

const NSInteger currentLevel = ...;
[preferences setInteger:currentLevel forKey:currentLevelKey];

//  Save to disk
const BOOL didSave = [preferences synchronize];

if (!didSave)
{
    //  Couldn't save (I've never seen this happen in real world testing)
}

সুইফট:

পাঠ:

let preferences = NSUserDefaults.standardUserDefaults()

let currentLevelKey = "currentLevel"

if preferences.objectForKey(currentLevelKey) == nil {
    //  Doesn't exist
} else {
    let currentLevel = preferences.integerForKey(currentLevelKey)
}

লেখা:

let preferences = NSUserDefaults.standardUserDefaults()

let currentLevelKey = "currentLevel"

let currentLevel = ...
preferences.setInteger(currentLevel, forKey: currentLevelKey)

//  Save to disk
let didSave = preferences.synchronize()

if !didSave {
    //  Couldn't save (I've never seen this happen in real world testing)
}

আপনি সুইফট if let savedLevel = preferences.integerForKey(currentLevelKey) { কারেন্ট লেভেল = সেভড লেভেল reading পড়ার জন্য শর্তাধীন বাঁধাইও ব্যবহার করতে পারেন
রঘু তেজা

4
@ চিতি কোন কাজই করবে না, পূর্ণসংখ্যার জন্যকি কোনও alচ্ছিক ফিরিয়ে দেয় না
সোমজু

40

সুইফট 3-এর জন্য এখানে একটি আপডেট

পড়া

let preferences = UserDefaults.standard

let currentLevelKey = "currentLevel"
if preferences.object(forKey: currentLevelKey) == nil {
    //  Doesn't exist
} else {
    let currentLevel = preferences.integer(forKey: currentLevelKey)
}

লেখা

let preferences = UserDefaults.standard

let currentLevel = ...
let currentLevelKey = "currentLevel"
preferences.set(currentLevel, forKey: currentLevelKey)

হালনাগাদ

ইউজারডিফল্টস ডকুমেন্টেশন থেকে

synchronize()ডিফল্ট ডেটাবেস এবং রিটার্নে কোনও মুলতুবি অ্যাসিনক্রোনাস আপডেটের জন্য অপেক্ষা করে; এই পদ্ধতিটি এখন অপ্রয়োজনীয় এবং ব্যবহার করা উচিত নয়।


2
class Configuration {

    static func value<T>(defaultValue: T, forKey key: String) -> T{

        let preferences = UserDefaults.standard
        return preferences.object(forKey: key) == nil ? defaultValue : preferences.object(forKey: key) as! T
    }

    static func value(value: Any, forKey key: String){

        UserDefaults.standard.set(value, forKey: key)
    }

}

উদাহরণ

//set
Configuration.value(value: "my_value", forKey: "key_1")

//get
let myValue = Configuration.value(defaultValue: "default_value", forKey: "key_1")

-1

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

ViewController.swift

 // write data
 writeAnyData(key: "MY_KEY", value: "MyData")
 // read string data 
 readStringData(key: "MY_KEY"), animated: true)

Utils.swift

// read and write user default
let userDefault = UserDefaults.standard
// write
func writeAnyData(key: String, value: Any){
    userDefault.set(value, forKey: key)
    userDefault.synchronize()
}

// read int values
func readIntData(key: String) -> Int{
    if userDefault.object(forKey: key) == nil {
        return 0
    } else {
        return userDefault.integer(forKey: key)
    }
}

// read string values
func readStringData(key: String) -> String{
    if userDefault.object(forKey: key) == nil {
        return ""
    } else {
        return userDefault.string(forKey: key)!
    }
}
// read bool value
func readBoolData(key: String) -> Bool{
    if userDefault.object(forKey: key) == nil {
        return false
    } else {
        return userDefault.bool(forKey: key)
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.