0

我想保存一些用户偏好,但是

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

只是返回nil

iOS-Developer 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];

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

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

4

2 回答 2

5

这很可能是调试器的问题,而不是其他任何问题,尤其是您的其他问题。我在自己的项目中看到过类似的事情,但除了通常的重启/清理选项之外,没有可靠的方法来清除它。

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

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

于 2013-12-19T09:55:50.337 回答
-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);
    }
于 2013-12-19T09:53:18.437 回答