2012-02-09 3 views

risposta

53

Non esiste un modo per verificare se un oggetto all'interno di NSUserDefaults è vuoto o meno. Tuttavia, è possibile verificare se un valore per una chiave particolare è nullo o no.

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 

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

Grazie funziona –

+0

Soluzione eccezionale ... :) – Adi

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

Date un'occhiata a 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

Si dovrebbe confrontare a zero, non NULL, come afferma @Krishnabhadra. –

+0

@PhilippeSabourin grazie. NULL è un vuoto *, nil è un id. –

0

Per verificare se un valore specifico è impostato o no, non importa la sua posizione (globale o applicazione di), controllare il valore restituito di -[NSUserDefaults objectForKey:]

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

Per verificare se l'applicazione (bundle) ha tutte le impostazioni memorizzate in default degli utenti :

NSUserDefaults* sdu = [NSUserDefaults standardUserDefaults]; 

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

NSLog(@"%@", mainBundleSettings); 

Se siete interessati a tutti i possibili valori per i quali -[NSUserDefaults objectForKey:] tornerà qualcosa, incluse le impostazioni globali del sistema, è sufficiente chiamare

NSDictionary* allPossibleSettings = [sdu dictionaryRepresentation]; 

NSUserDefaults è mai vuoto. Combina impostazioni globali, impostazioni di bundle, dati temporanei e forse qualcos'altro. Ad esempio, se si chiama:

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

si otterrà il valore stringa @"LucidaGrande-Bold" che sarà preso dalle impostazioni globali, anche quando l'applicazione non è mai impostare questo valore.