NSUserDefaults没有在cocoa中保存任何值

时间:2018-02-14 05:55:08

标签: objective-c macos cocoa nsuserdefaults

我正在尝试使用NSUserDefaults保存BOOL值和一些简单的字符串。但NSUserdefaults并没有保存任何价值。我将值保存到NSUserDefaults后也使用了同步。我用来将BOOL保存到NSUserDefaults的方式如下所示。

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"loadfirsttimewindow"];
[[NSUserDefaults standardUserDefaults] synchronize];

我用来将字符串保存到NSUserDefaults的方式如下所示。

[[NSUserDefaults standardUserDefaults] setValue:title1 forKey:@"item1"];
[[NSUserDefaults standardUserDefaults] synchronize];

因此,请告诉我存储了NSUserDefaults值的原因以及为什么它没有将任何值保存到NSUserDefaults中。

简单地说,我只想保存即使在应用程序关闭后也会保存的值。

我用于将值保存到NSUserDefaults中的代码示例,如下所示:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{

    NSLog(@"%hhd",[[NSUserDefaults standardUserDefaults] boolForKey:@"loadfirsttimewindow"]);
    if (![[NSUserDefaults standardUserDefaults] boolForKey:@"loadfirsttimewindow"])
    {
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"loadfirsttimewindow"];
        [[NSUserDefaults standardUserDefaults] synchronize];
         *I have written code for the thing I have to do only when the application is launched for the first time.*
    }
    else
    {
       *I have written code for the thing I have to after the application is launched for the first time.*
    }
 }

1 个答案:

答案 0 :(得分:1)

我从下面给出的链接中找到了我的解决方案:

Mac sandbox created but no NSUserDefaults plist

当您在测试/调试垃圾箱时移动容器时,cfprefsd(请参阅活动监视器)仍保留指向.plist的链接。清空垃圾箱并强制退出cfprefsd(用户和root)。