উত্তর:
সুইফট 3.0
আমি এটি পরীক্ষা করে নিচের উত্তরটি আর হয় না। যখন nil
ফলাফলটিতে সেট করা হয় তখন এনএসসিএফডেটা সংরক্ষণ করা হয়। সম্ভবত একটি এনএসনুল অবজেক্ট রেফারেন্স, তবে আমি ইতিবাচক নই।
কী ব্যবহারের জন্য একটি মান সম্পূর্ণরূপে অপসারণ করতে UserDefaults.standard.removeObject(forKey: "YourDefault")
আমি নিম্নলিখিত কোডটি দিয়ে পরীক্ষা করেছি:
UserDefaults.standard.set(["a", "b", "c"], forKey: "MyDefaults")
print("Test A: My saved defaults \(UserDefaults.standard.object(forKey: "MyDefaults"))")
UserDefaults.standard.set(nil, forKey: "MyDefaults")
print("Test B: My defaults set to nil \(UserDefaults.standard.object(forKey: "MyDefaults"))")
UserDefaults.standard.removeObject(forKey: "MyDefaults")
print("Test C: My defaults removed \(UserDefaults.standard.object(forKey: "MyDefaults"))")
হ্যাঁ, উভয় কোডের লাইনের সমতুল্য, উভয়েরই ফলাফল শূন্য হবে
id obj = [[NSUserDefaults standardUserDefaults] objectForKey:@"example key"];
NSUserDefaults
কীটি না পাওয়া গেলে শূন্য করে ফিরবে। আমি এটি স্থির করার removeObjectForKey
পরিবর্তে এটি ব্যবহার করার পরামর্শ দেব ।
এখানে কী কী পরীক্ষা করতে হয় তা শূন্য করতে কী মান নির্ধারণ করা থেকে কী এন্ট্রি সরিয়ে ফেলা হয় NSUserDefaults standardUserDefaults
।
NSArray *keys = [[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] copy];
for(NSString *key in keys) {
NSLog(@"Key Name: %@", key);
}
[keys release];
অথবা এর মূল / মান অভিধানটি ডাম্প করুন NSUserDefaults standardUserDefaults
NSLog(@"All contents of NSUserDefaults: %@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);
removeObjectForKey
?
setObject:nil
এটি কেবল তার কীটিই নয়, বস্তুটিও সরিয়ে ফেলবে। সুতরাং, উভয় ফাংশন ঠিক একই ফলাফল কারণ। এছাড়াও, আপনি যদি কেবলমাত্র সঞ্চিত অবজেক্ট (এবং কী) মুছে ফেলেন তবে পুরো .plist ফাইলটি মুছে ফেলা হবে।
সুইফ্ট 5.0 + আইওএস 11 এবং তারপরে
উভয় পদ্ধতিই মানটিকে সরিয়ে দেয়। খেলার মাঠে এটি চেষ্টা করে:
import Foundation
let key = "Test"
let value = "test"
let defaults = UserDefaults.standard
func printUD() {
print("UserDefaults after modification:\n")
defaults.dictionaryRepresentation().forEach { print("\($0): \($1)\n") }
print("-------------\n\n")
}
defaults.set(value, forKey: key); printUD()
defaults.set(nil, forKey: key); printUD()
defaults.set(value, forKey: key); printUD()
defaults.removeObject(forKey: key); printUD()
আইওএস 11 এর আগে হবে serializing মধ্যে nil
মধ্যে Data
এবং একটি ত্রুটি নিক্ষেপ করা।