首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >NSUserDefaults removeObjectForKey与setObject:nil

NSUserDefaults removeObjectForKey与setObject:nil
EN

Stack Overflow用户
提问于 2011-05-17 23:24:11
回答 1查看 43.3K关注 0票数 118

下面两行是等价的吗?

代码语言:javascript
复制
`[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"example key"]`
代码语言:javascript
复制
`[[NSUserDefaults standardUserDefaults] setObject:nil forKey:@"example key"]`
EN

回答 1

Stack Overflow用户

发布于 2011-05-19 22:08:53

是的,这两行代码是等价的,都会导致空读取

代码语言:javascript
复制
id obj = [[NSUserDefaults standardUserDefaults] objectForKey:@"example key"];

如果没有找到密钥,NSUserDefaults将返回nil。我建议使用removeObjectForKey,而不是将其设置为nil。

下面是如何测试是否将键值设置为nil从NSUserDefaults standardUserDefaults中删除了键条目。

代码语言:javascript
复制
NSArray *keys = [[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] copy];
   for(NSString *key in keys) {
       NSLog(@"Key Name: %@", key);
}
[keys release];

或者简单地转储NSUserDefaults standardUserDefaults的键/值字典

代码语言:javascript
复制
NSLog(@"All contents of NSUserDefaults: %@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);
票数 96
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6033174

复制
相关文章

相似问题

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