iOS WatchKit – 将关键值观察者添加到NSUserDefaults崩溃

我正在尝试添加将数据从iPhone发送到Watch的function。 我已经设置了应用程序组,并且一切运行顺利,但是当我尝试在Watch扩展文件中添加观察者到NSUserDefaults时,应用程序在启动时总是崩溃。 (是的,我已经validation了应用程序组名称是正确的,并在所有目标function中进行了检查,并且所有预configurationconfiguration文件都是最新的,并启用了应用程序组)

码:

override func willActivate() { super.willActivate() NSUserDefaults(suiteName: "my.suite.name")?.addObserver(self, forKeyPath: "phoneSaysHello", options: NSKeyValueObservingOptions.New, context: nil) } override func didDeactivate() { super.didDeactivate() // Remove listener for commands sent from phone NSUserDefaults(suiteName: "my.suite.name")?.removeObserver(self, forKeyPath: "phoneSaysHello", context: nil) } 

错误:

***由于未捕获exception“NSInternalInconsistencyException”,原因:终止应用程序NSUserDefaults类的一个实例0x7f99534559b0被释放,而键值观察员仍然注册。 当前观察信息:(上下文:0x0,属性:0x7f9953609200>)'

看起来你的NSUserDefaults已经超出了范围。 将userDefaults转换为实例variables应该停止引发exception。