-3

伙计们,我有一个快速的问题。我读了一些类似的答案,但它们不那么务实。

当您退出 xCode 时,NSUserDefaults不会被保存。但是,当我将我的应用程序从 iPhone(在真实设备上)的内存中取出时,我如何才能检查NSUserDefaults我是否得到了保存?可以在模拟器上检查吗?还是我的代码错了?

我在我调用的视图控制器中有这段代码(我settingsViewController的没有)。NSUserDefaultsappDelegate

- (void)viewDidLoad
{
    [super viewDidLoad];
    defaults = [NSUserDefaults standardUserDefaults];
}

- (IBAction)firstAlert:(UISwitch *)sender
{
    [defaults setBool:firstAlert.on forKey:@"firstAlert"];
    [defaults synchronize];
    NSLog(@"%d",[defaults boolForKey:@"firstAlert"]);
}
4

3 回答 3

1

当您通过点击停止退出 xcode 时,它​​不会保存。点击主页按钮并尝试一下。

NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults]; 
if (standardUserDefaults) { 
    [standardUserDefaults setObject:myString forKey:@"Prefs"]; 
    [standardUserDefaults synchronize]; 
}
于 2013-09-02T07:37:29.783 回答
1

(的本地域)的实际后备存储NSUserDefaultsLibrary/Preferences/<bundle-identifier>.plist. 您可以将此文件复制到您的 Mac 并使用 Xcode 检查其内容。

如果您发现您的偏好没有得到保存,我会查看您的defaults变量。我敢打赌它没有初始化。

于 2013-09-02T07:57:25.427 回答
0

感谢 Nikolai Ruhe 的回答,我明白了我错过了什么以及为什么我首先提出这个问题。似乎没有设置初始设置,那是因为我没有将这些代码行传递到我的viewDidLoad. 这与 Sail 的答案相同,但我还没有看到该代码之间的联系viewDidLoad。这是我的方法所需的完整实现。

- (void)viewDidLoad
{
    [super viewDidLoad];
    defaults = [NSUserDefaults standardUserDefaults];

    if(defaults){
        firstAlert.on = [defaults boolForKey:@"firstAlert"];
    }
}

请注意,这不是我真正问题的答案,真正的答案是尼古拉的答案。这个答案只是显示了我如何使用他的答案来理解我的问题的根源。

于 2013-09-02T08:23:15.010 回答