这段代码在我的应用程序中总是给我“否”。它确实可以在我复制它的任何其他项目中工作...所以我的 standardUserDefaults 一定搞砸了,但我绝对不知道这是如何发生的以及如何解决它!
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
在有人问之前:
- 是的,即使在它们之间调用了同步
- 是的,这是整个代码,行与行之间没有任何内容...设置并在之后正确获取它不起作用
我找到了一个解决方案,如何修复它,但没有找到为什么会发生这种情况,而且到目前为止还没有干净、好的方法。
如果有人可以解释这一点并给我一个更好的解决方案,那就这样做!
问题是:
如果删除沙盒应用程序的容器,您还会删除 NSUserDefaults 的 plist,并且不会再次创建它,因此 NSUserDefaults 根本不起作用。
-
解决方法:
正如我在这里发现的https://ind.ie/labs/blog/app-sandbox-updating-nsuserdefaults-fails-after-deleting-apps-container-directory/ 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)