`[NSUserDefaults standardUserDefaults]`返回nil

时间:2013-12-19 09:43:20

标签: ios objective-c ios7 nsuserdefaults appirater

我想保存一些用户首选项,但

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

只返回nil

iOS-Developper Library说,这应该返回现有的共享默认对象,如果不存在则创建一个...我错过了什么?

我也使用Appirater并且所有这些东西似乎也不起作用......

当用户按下按钮时会调用此代码...

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
int index = ([defaults integerForKey:@"BackgroundColorSpecifier"]+ 1)%self.backgroundColors.count;
[defaults setInteger:index forKey:@"BackgroundColorSpecifier"];
[defaults synchronize];

这会在application: didFinishLaunchingWithOptions:

中调用
NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];
[standardDefaults registerDefaults:@{@"BackgroundColorSpecifier": @0}];
[standardDefaults synchronize];

当我调试此代码片段时,绿色的“位置指示器”以非常奇怪的方式跳转...

我没有任何线索,发生了什么......请帮助!

2 个答案:

答案 0 :(得分:5)

调试器的问题远比其他任何问题更严重,特别是对于其他问题。我在自己的项目中看到了类似的东西,但除了通常的重启/清理选项之外,没有可靠的清除方法。

如果调试器有休息日,NSLogs通常会提供比调试器更一致的结果。

NSUserDefaults没有被破坏。我们现在已经听说过了。

答案 1 :(得分:-2)

您可以使用此功能记录userDefaults dic

 - (void)logCache
    {
        NSDictionary * dic = [[NSBundle mainBundle] infoDictionary];
        NSString *bundleId = [dic  objectForKey: @"CFBundleIdentifier"];
        NSUserDefaults *appUserDefaults = [[NSUserDefaults alloc] init];
        NSDictionary *cacheDic = [appUserDefaults persistentDomainForName: bundleId];
        NsLog(@"cacheDic::%@",cacheDic);
    }