【问题标题】:NSUserDefaults is not saving any value in cocoa [duplicate]NSUserDefaults 没有在可可中保存任何值 [重复]
【发布时间】:2018-02-14 05:55:08
【问题描述】:

我正在尝试使用 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.*
    }
 }

【问题讨论】:

  • 你怎么知道这些值没有被保存?顺便说一句 - 不要使用setValue:forKey:。使用setObject:forKey:
  • @rmaddy 我已将值保存到 NSUserDefaults 中,然后尝试打印该键的值。
  • 用完全展示您的问题的代码更新您的问题。
  • @rmaddy 我添加了一个代码示例。像这样,我尝试在 NSUserDefaults 中保存许多值。但是没有保存任何值。
  • 我试过这样,结果是,它只给我设计应用程序的一个设备提供用户名和密码。

标签: objective-c macos cocoa nsuserdefaults


【解决方案1】:

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

Mac sandbox created but no NSUserDefaults plist

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

【讨论】:

    猜你喜欢
    • 2016-05-06
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 2011-08-01
    • 1970-01-01
    相关资源
    最近更新 更多