সুইফ্ট 5+
উত্তরগুলির মধ্যে কোনওটিই স্থানীয় স্টোরেজ সক্ষমতায় নির্মিত ডিফল্টের বিষয়ে বিস্তারিতভাবে কভার করে না। এটি কেবল স্ট্রিংয়ের চেয়েও অনেক বেশি কিছু করতে পারে ।
আপনার ডিফল্ট থেকে ডেটা পাওয়ার জন্য আপেল ডকুমেন্টেশন থেকে সরাসরি নিম্নলিখিত বিকল্পগুলি রয়েছে।
func object(forKey: String) -> Any?
//Returns the object associated with the specified key.
func url(forKey: String) -> URL?
//Returns the URL associated with the specified key.
func array(forKey: String) -> [Any]?
//Returns the array associated with the specified key.
func dictionary(forKey: String) -> [String : Any]?
//Returns the dictionary object associated with the specified key.
func string(forKey: String) -> String?
//Returns the string associated with the specified key.
func stringArray(forKey: String) -> [String]?
//Returns the array of strings associated with the specified key.
func data(forKey: String) -> Data?
//Returns the data object associated with the specified key.
func bool(forKey: String) -> Bool
//Returns the Boolean value associated with the specified key.
func integer(forKey: String) -> Int
//Returns the integer value associated with the specified key.
func float(forKey: String) -> Float
//Returns the float value associated with the specified key.
func double(forKey: String) -> Double
//Returns the double value associated with the specified key.
func dictionaryRepresentation() -> [String : Any]
//Returns a dictionary that contains a union of all key-value pairs in the domains in the search list.
এখানে 'সেটিং' এর বিকল্পগুলি রয়েছে
func set(Any?, forKey: String)
//Sets the value of the specified default key.
func set(Float, forKey: String)
//Sets the value of the specified default key to the specified float value.
func set(Double, forKey: String)
//Sets the value of the specified default key to the double value.
func set(Int, forKey: String)
//Sets the value of the specified default key to the specified integer value.
func set(Bool, forKey: String)
//Sets the value of the specified default key to the specified Boolean value.
func set(URL?, forKey: String)
//Sets the value of the specified default key to the specified URL.
যদি পছন্দের মতো জিনিসগুলি সংরক্ষণ করা হয় এবং কোনও বড় ডেটা সেট না থাকে তবে এগুলি পুরোপুরি সূক্ষ্ম বিকল্প।
দ্বৈত উদাহরণ :
বিন্যাস:
let defaults = UserDefaults.standard
var someDouble:Double = 0.5
defaults.set(someDouble, forKey: "someDouble")
পেয়ে:
let defaults = UserDefaults.standard
var someDouble:Double = 0.0
someDouble = defaults.double(forKey: "someDouble")
প্রাপ্তদের একজনের সম্পর্কে কী আকর্ষণীয় তা হ'ল ডিকোশনারি রিপ্রেজিশনেশন , এই সহজ উপার্জনকারী আপনার ডেটা ধরণের যা তা নির্বিশেষে গ্রহণ করবে এবং এটিকে একটি দুর্দান্ত অভিধানে রাখবে যা আপনি তার স্ট্রিং নাম দ্বারা অ্যাক্সেস করতে পারবেন এবং যখন অনুরোধ করবেন তখন সঠিক সম্পর্কিত ডেটা টাইপ দেবেন এটি ' টাইপ ' টাইপ হওয়ার পরে এটি ফিরে আসে ।
আপনি আপনার নিজের শ্রেণীর সংরক্ষণ করতে পারেন এবং ব্যবহার অবজেক্টের func set(Any?, forKey: String)
এবং func object(forKey: String) -> Any?
সেটার এবং সেই অনুযায়ী সংগ্রহকারী।
আশা করি এটি স্থানীয় ডেটা সংরক্ষণের জন্য ইউজার ডেফল্ট শ্রেণীর আরও শক্তি স্পষ্ট করে।
আপনার কতটুকু সঞ্চয় করা উচিত এবং কতবার, এই মন্তব্যটিতে হার্ডি_গারমানি এই পোস্টে একটি ভাল উত্তর দিয়েছেন , এটির একটি উদ্ধৃতি এখানে
ইতিমধ্যে উল্লিখিত হিসাবে অনেকগুলি: আমি একটি .plist (যেমন ব্যবহারকারীর ডেফাল্টস) -এ ডেটা সঞ্চয় করার জন্য কোনও আকারের সীমাবদ্ধতা (শারীরিক স্মৃতি ছাড়া) সম্পর্কে অবগত নই। সুতরাং এটি কতটা প্রশ্ন নয়।
আসল প্রশ্নটি আপনি নতুন / পরিবর্তিত মান লিখার পরেও হওয়া উচিত ... এবং এটি ব্যাটারি ড্রেনের সাথে সম্পর্কিত যা এই লেখার কারণ হবে।
আইওএসের কেবলমাত্র ডেটা অখণ্ডতা বজায় রাখার জন্য, যদি একটি একক মান পরিবর্তিত হয় তবে "ডিস্কে" কোনও শারীরিক লেখা এড়ানোর কোনও সুযোগ নেই। ইউজারডিফাল্টস সম্পর্কিত এটি পুরো ফাইলটি ডিস্কে আবার লিখিত হয়।
এটি "ডিস্ক "টিকে শক্তিশালী করে এবং এটিকে দীর্ঘ সময়ের জন্য চালিত রাখে এবং আইওএসকে কম পাওয়ার অবস্থায় যেতে বাধা দেয়।
নোটটিতে অন্য কিছু হিসাবে এই ব্যবহারকারীকে মোহাম্মদ রেজা Farahani উল্লেখ পোস্ট হয় অ্যাসিঙ্ক্রোনাস এবং সমকালীন userDefaults প্রকৃতি।
আপনি যখন কোনও ডিফল্ট মান সেট করেন, এটি আপনার প্রক্রিয়াটির মধ্যে এবং এককভাবে ক্রমাগত স্টোরেজ এবং অন্যান্য প্রক্রিয়াতে পরিবর্তিত হয়।
উদাহরণস্বরূপ, আপনি যদি প্রোগ্রামটি সংরক্ষণ এবং দ্রুত বন্ধ করে থাকেন তবে আপনি খেয়াল করতে পারেন এটি ফলাফলগুলি সংরক্ষণ করে না, কারণ এটি অবিচ্ছিন্নভাবে স্থির থাকে। আপনি এটি সর্বদা লক্ষ্য করতে পারবেন না তাই আপনি প্রোগ্রামটি বন্ধ করার আগে যদি আপনি সঞ্চয় করার পরিকল্পনা করেন তবে আপনি এটি শেষ করার জন্য কিছু সময় দিয়ে এইটির জন্য অ্যাকাউন্ট করতে চাইতে পারেন।
কারও কারও কাছে এর জন্য কিছু সুন্দর সমাধান থাকতে পারে তারা মন্তব্যগুলিতে ভাগ করতে পারে?