首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >NSUserDefaults是否包含值?

NSUserDefaults是否包含值?
EN

Stack Overflow用户
提问于 2012-02-09 14:16:34
回答 3查看 21.5K关注 0票数 18

如何知道NSUserDefaults是否包含任何值?如何检查其是否为空?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-09 14:22:31

没有办法检查NSUserDefaults中的对象是否为空。但是,您可以检查特定键的值是否为空。

代码语言:javascript
复制
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

NSObject * object = [prefs objectForKey:@"your_particular_key"];
if(object != nil){
   //object is there
}
票数 56
EN

Stack Overflow用户

发布于 2012-02-09 14:22:50

代码语言:javascript
复制
NSUserDefaults *data = [NSUserDefaults standardUserDefaults];  
NSString *string = [data objectForKey:@"yourKey"];
if(string==nil)
NSlog(@"nil")  

看一看NSUserDefault documentation

代码语言:javascript
复制
// 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"];
票数 1
EN

Stack Overflow用户

发布于 2012-02-09 15:29:56

要检查是否设置了特定值,无论其位置如何(全局或应用程序的),请检查-[NSUserDefaults objectForKey:]的返回值

代码语言:javascript
复制
id obj = [[NSUserDefaults standardUserDefaults] objectForKey:@"My-Key-Name"];
if (obj != nil) {...}

要检查应用程序(捆绑包)是否有任何设置存储在用户默认设置中:

代码语言:javascript
复制
NSUserDefaults* sdu = [NSUserDefaults standardUserDefaults];

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

NSLog(@"%@", mainBundleSettings);

如果您对-[NSUserDefaults objectForKey:]将返回某些内容的所有可能值感兴趣,包括系统全局设置,只需调用

代码语言:javascript
复制
NSDictionary* allPossibleSettings = [sdu dictionaryRepresentation];

NSUserDefaults从不为空。它结合了全局设置,捆绑包的设置,临时数据,可能还有其他东西。例如,如果您调用:

代码语言:javascript
复制
[[NSUserDefaults standardUserDefaults] objectForKey:@"NSBoldSystemFont"]

您将获得从全局设置中获取的@"LucidaGrande-Bold"字符串值,即使您的应用程序从未设置过此值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9206263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档