Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 将字典存储在NSUserDefaults中导致EXC\u访问错误_Xcode_Swift_Dictionary_Nsuserdefaults - Fatal编程技术网

Xcode 将字典存储在NSUserDefaults中导致EXC\u访问错误

Xcode 将字典存储在NSUserDefaults中导致EXC\u访问错误,xcode,swift,dictionary,nsuserdefaults,Xcode,Swift,Dictionary,Nsuserdefaults,错误消失了。知道为什么会发生这种情况吗,我甚至还没有从NSUserDefaults中检索词典。解决了这个问题,在使用以下工具保存词典后,立即从NSUserDefaults中检索词典: NSUserDefaults.standardUserDefaults().setObject(userScore, forKey: "userScore") 我也有这个问题。结果证明这是一个KVO问题。您可能已解除分配了观察此值的对象,因此消息正在发送,而未按预期接收 我的解决方案是从关联的解除分配对象中删除观

错误消失了。知道为什么会发生这种情况吗,我甚至还没有从NSUserDefaults中检索词典。

解决了这个问题,在使用以下工具保存词典后,立即从NSUserDefaults中检索词典:

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];