Come sapere se NSUserDefaults
contiene qualche valore? Come verificare se è vuoto?NSUserDefaults contiene valore o no?
risposta
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
}
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"];
Si dovrebbe confrontare a zero, non NULL, come afferma @Krishnabhadra. –
@PhilippeSabourin grazie. NULL è un vuoto *, nil è un id. –
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.
Grazie funziona –
Soluzione eccezionale ... :) – Adi