如何知道NSUserDefaults
是否包含任何值?如何检查它是否为空?
答案 0 :(得分:55)
无法检查NSUserDefaults中的对象是否为空。 但是,您可以检查特定键的值是否为零。
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSObject * object = [prefs objectForKey:@"your_particular_key"];
if(object != nil){
//object is there
}
答案 1 :(得分:1)
NSUserDefaults *data = [NSUserDefaults standardUserDefaults];
NSString *string = [data objectForKey:@"yourKey"];
if(string==nil)
NSlog(@"nil")
// 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"];
答案 2 :(得分: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"
字符串值,该值将从全局设置中获取,即使您的应用程序从未设置此值。