Kev*_*rry 17 cocoa-touch objective-c
有没有人知道通过NSLog转储NSUserDefaults的standardUserDefaults的快速方法?这就是我所拥有的:
NSLog(@"NSUserDefaults dump: %@", [NSUserDefaults standardUserDefaults]);
Run Code Online (Sandbox Code Playgroud)
但它返回:
NSUserDefaults dump: <NSUserDefaults: 0x50b520>
Run Code Online (Sandbox Code Playgroud)
......这不是我想要的.我真的很想拥有键值对.
任何帮助或正确方向的一点将不胜感激.干杯!
rpe*_*ich 37
NSLog(@"NSUserDefaults dump: %@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);
Run Code Online (Sandbox Code Playgroud)
Kev*_*rry 18
感谢我的商业伙伴和朋友Don McCaughey修复我的代码并提供简明的答案.要与其他人分享,这里有一段代码:
NSDictionary *bundleInfo = [[NSBundle mainBundle] infoDictionary];
NSString *bundleId = [bundleInfo objectForKey: @"CFBundleIdentifier"];
NSUserDefaults *appUserDefaults = [[NSUserDefaults alloc] init];
NSLog(@"Start dumping userDefaults for %@", bundleId);
NSLog(@"userDefaults dump: %@", [appUserDefaults persistentDomainForName: bundleId]);
NSLog(@"Finished dumping userDefaults for %@", bundleId);
[appUserDefaults release];
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,每个回答问题的人都在正确的轨道上,但没有提供任何代码的解决方案 - 直到Don在源代码管理中编辑我们的代码.谢谢大家!
the*_*met 10
尝试:
NSLog(@"NSUserDefaults dump: %@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);
Run Code Online (Sandbox Code Playgroud)
dictionaryRepresentation返回默认值的NSDictionary表示.
NSLog(@"%@ defaults = %@", [self class],
[[NSUserDefaults standardUserDefaults]
persistentDomainForName:[[NSBundle mainBundle] bundleIdentifier]]);
Run Code Online (Sandbox Code Playgroud)
默认情况下,共享的NSUserDefaults使用三个搜索域进行初始化(如果需要,还可以添加其他搜索域):app参数,app首选项(存储在应用程序plist中的内容)和本地化系统首选项.最后一个是为什么你会看到那些不熟悉的Apple键,但你真的不必担心"覆盖"它们.如果您使用相同的密钥名称,它只会将该值放在应用程序首选项域中.系统首选项之前会搜索您应用的首选项,因此您将获得相同的值,但不会影响其他任何内容.
如果您确实只想要应用程序的首选项,则可以删除其他搜索域(您需要的特定名称在文档中).
| 归档时间: |
|
| 查看次数: |
10406 次 |
| 最近记录: |