OSX NSUserDefaults 不工作

OSX NSUserDefaults not Working

此代码在我的应用程序中始终给出 NO。它确实在我复制它的任何其他项目中都有效......所以我的标准用户默认值一定是搞砸了,但我绝对不知道这是怎么发生的以及如何解决它!

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:YES forKey:@"myKey"];

BOOL test = [defaults boolForKey:@"myKey"];
// test is ALWAYS NO here!

任何人都可以提示我,从哪里开始或如何摆脱这个?

这是一个包含 swift 和 objective c 的混合项目,当我将其直接放入我的 applicationDidFinishLaunching

时,我得到了相同的行为 AppDelegate.swift
let defaults = NSUserDefaults.standardUserDefaults()        
defaults.setBool(true, forKey: "myKey")

let test = defaults.boolForKey("myKey")
// test ALWAYS false here   

之前有人问: - 是的,即使在它之间调用了同步 - 是的,这是完整的代码,字里行间没有任何内容......在不起作用之后立即设置并获取它

我找到了一个解决方案,如何修复它,但不知道为什么会发生这种情况,目前还没有干净、好的方法。

如果有人可以解释这一点并给我一个更好的解决方案,请这样做!

  1. 问题是: 如果您删除沙盒应用程序的容器,您也会删除 NSUserDefaults 的 plist,并且不会再次创建它,因此 NSUserDefaults 根本不起作用。

  2. 解决方法: 正如我在这里 https://ind.ie/labs/blog/app-sandbox-updating-nsuserdefaults-fails-after-deleting-apps-container-directory/ 所发现的,这是系统永久书签的问题。 好吧,只是清空垃圾箱对我不起作用,但有效的是:我只是创建了丢失的文件!

    touch ~/Library/Containers/com.example.myapp/Data/Library/Preferences/com.example.myapp.plist