如何知道NSUserDefaults
是否包含任何值?如何检查其是否为空?
发布于 2012-02-09 14:22:31
没有办法检查NSUserDefaults中的对象是否为空。但是,您可以检查特定键的值是否为空。
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSObject * object = [prefs objectForKey:@"your_particular_key"];
if(object != nil){
//object is there
}
发布于 2012-02-09 14:22:50
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"];
发布于 2012-02-09 15:29:56
要检查是否设置了特定值,无论其位置如何(全局或应用程序的),请检查-[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"
字符串值,即使您的应用程序从未设置过此值。
https://stackoverflow.com/questions/9206263
复制相似问题