Xcode 将字典存储在NSUserDefaults中导致EXC\u访问错误
错误消失了。知道为什么会发生这种情况吗,我甚至还没有从NSUserDefaults中检索词典。解决了这个问题,在使用以下工具保存词典后,立即从NSUserDefaults中检索词典:Xcode 将字典存储在NSUserDefaults中导致EXC\u访问错误,xcode,swift,dictionary,nsuserdefaults,Xcode,Swift,Dictionary,Nsuserdefaults,错误消失了。知道为什么会发生这种情况吗,我甚至还没有从NSUserDefaults中检索词典。解决了这个问题,在使用以下工具保存词典后,立即从NSUserDefaults中检索词典: NSUserDefaults.standardUserDefaults().setObject(userScore, forKey: "userScore") 我也有这个问题。结果证明这是一个KVO问题。您可能已解除分配了观察此值的对象,因此消息正在发送,而未按预期接收 我的解决方案是从关联的解除分配对象中删除观
NSUserDefaults.standardUserDefaults().setObject(userScore, forKey: "userScore")
我也有这个问题。结果证明这是一个KVO问题。您可能已解除分配了观察此值的对象,因此消息正在发送,而未按预期接收
我的解决方案是从关联的解除分配对象中删除观察者。请始终记住,如果您添加观察员:forKeyPath:options:context:以将其与关联的
removeObserver:forKeyPath:
调用相匹配。我也遇到了同样的问题
我将字符串值存储在NSUserDefault中,如下所示:
var userScoreTemp : AnyObject? = NSUserDefaults.standardUserDefaults().objectForKey("userScore")
if userScoreTemp != nil {
userScore = userScoreTemp! as Dictionary
}
一段时间后,它在同一点崩溃,写入相同的值。原因是在此期间之后,我注册了NSUserdefaults中的更改,代码如下:
[[NSUserDefaults standardUserDefaults] stValue:@"Rahul" forKey:@"Name"];
这是在初始化时在导入程序中完成的。在取消分配导入程序后,对用户默认值的新写入将触发已消失对象的观察者。撞车
解决方案当然是移除观察者
NSUserDefaults*默认值=[NSUserDefaults standardUserDefaults];
[默认removeObserver:self-forKeyPath:@“Name”]
[[NSUserDefaults standardUserDefaults] stValue:@"Rahul" forKey:@"Name"];
[[NSNotificationCenter defaultCenter] addObserver:self selector: @selector(valueChange) name:NSUserDefaultsDidChangeNotification object:nil];