【发布时间】:2015-03-05 15:31:11
【问题描述】:
此代码在我的应用程序中总是给我“否”。它确实可以在我复制它的任何其他项目中工作......所以我的标准用户默认值一定是搞砸了,但我绝对不知道这是怎么发生的以及如何解决它!
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
在有人问之前: - 是的,即使在它之间调用了同步 - 是的,这是整个代码,行间没有任何内容......设置并在不起作用后立即获取它
【问题讨论】:
-
你如何检查
test的值? -
检查:
NSLog(test ? @"Yes" : @"No");Btw 任何想知道这种语法的人,它被称为三元运算符。 -
我使用 NSLog 并直接在带有断点的调试器中进行了检查。还使用了同步和签入文件...文件永远不会创建! - 但我发现了一些东西:当我改变我的包标识符时它可以工作......但我不能改变这个!它已在 itunes connect 中注册(它是一个沙盒应用商店应用程序) - 该应用程序以前工作过,当此行为开始时我无法弄清楚我的版本控制发生了变化......永远不要更改捆绑 ID。
-
我的应用程序本身从不使用 NSUserDefaults,它是其他库,如 dropbox.framework 或 Google API。我不知道要为他们注册什么,到目前为止他们都失败了,因为 NSUserDefaults 没有存储任何信息。 - 并且更改捆绑 ID 只工作了一次。删除钥匙串中的容器和条目以重新启动并再次测试全新安装后,它再次失败...有什么我想删除的东西(甚至从 XCode 中删除了 derivedData)
-
找到了这个:ind.ie/labs/blog/… - 但即使是空垃圾,它也没有重新创建或再次工作..
标签: objective-c macos nsuserdefaults