2012-02-09 11 views

उत्तर

53

यह जांचने का कोई तरीका नहीं है कि NSUserDefaults के भीतर कोई ऑब्जेक्ट खाली है या नहीं। हालांकि, आप जांच सकते हैं कि विशेष कुंजी के लिए मान शून्य है या नहीं।

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 

NSObject * object = [prefs objectForKey:@"your_particular_key"]; 
if(object != nil){ 
    //object is there 
} 
+0

धन्यवाद यह –

+0

बहुत बढ़िया समाधान काम करता है ... :) – Adi

1
NSUserDefaults *data = [NSUserDefaults standardUserDefaults]; 
NSString *string = [data objectForKey:@"yourKey"]; 
if(string==nil) 
NSlog(@"nil") 

NSUserDefault documentation

// For saving the values 
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
// saving an NSString 
[userDefaults setObject:@"Ttest" forKey:@"key"]; 
// --- For Retrieving 

NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults]; 
// getting an NSString 
NSString *myString = [userDefaults stringForKey:@"key"]; 
+0

आपको निक्ल की तुलना नहीं करनी चाहिए, न कि @ कृष्णाभद्र राज्यों के रूप में। –

+0

@ फिलिपपेबोरिन धन्यवाद। नल एक शून्य है *, शून्य एक आईडी है। –

0

पर एक नजर डालें जांच करने के लिए एक विशिष्ट मूल्य सेट कर दिया जाता है या नहीं, इसके स्थान से कोई फर्क नहीं पड़ता (वैश्विक या आवेदन के), -[NSUserDefaults objectForKey:] के दिए गए मान की जाँच

id obj = [[NSUserDefaults standardUserDefaults] objectForKey:@"My-Key-Name"]; 
if (obj != nil) {...} 

यह जांचने के लिए कि एप्लिकेशन (बंडल) में उपयोगकर्ता डिफ़ॉल्ट में कोई सेटिंग संग्रहीत है या नहीं :

NSUserDefaults* sdu = [NSUserDefaults standardUserDefaults]; 

NSString* bundleId = [[NSBundle mainBundle] bundleIdentifier]; 
NSDictionary* mainBundleSettings = [sdu persistentDomainForName:bundleId]; 

NSLog(@"%@", mainBundleSettings); 

आप सभी संभावित मान जिसके लिए -[NSUserDefaults objectForKey:] कुछ वापस आ जाएगी, प्रणाली वैश्विक सेटिंग्स सहित में रुचि रखते हैं, बस फोन

NSDictionary* allPossibleSettings = [sdu dictionaryRepresentation]; 

NSUserDefaults खाली नहीं है। यह वैश्विक सेटिंग्स, बंडल की सेटिंग्स, अस्थायी डेटा और शायद कुछ और जोड़ता है। उदाहरण के लिए, अगर आप कहते हैं:

[[NSUserDefaults standardUserDefaults] objectForKey:@"NSBoldSystemFont"] 

आप @"LucidaGrande-Bold" स्ट्रिंग मान जो वैश्विक सेटिंग्स से लिया जाएगा, तब भी जब आपके आवेदन यह मान सेट नहीं किया है मिल जाएगा।

संबंधित मुद्दे