Ios 已发送到与KVC不兼容的对象;com“;财产
我想观察存储在UserDefaults.standard中的键:com.apple.configuration.managed下的值,所以我这样做了:Ios 已发送到与KVC不兼容的对象;com“;财产,ios,swift,cocoa,Ios,Swift,Cocoa,我想观察存储在UserDefaults.standard中的键:com.apple.configuration.managed下的值,所以我这样做了: UserDefaults.standard.addObserver(self, forKeyPath: "com.apple.configuration.managed", options: [.new, .old], context: nil) 然后我实施了以下措施: override func observeValue(forKeyPath
UserDefaults.standard.addObserver(self, forKeyPath: "com.apple.configuration.managed", options: [.new, .old], context: nil)
然后我实施了以下措施:
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
}
当我运行应用程序observeValue时。。。在更改默认值时从不调用,而是Xcode崩溃并出现以下错误:
***由于未捕获异常而终止应用程序
“NSUnknownKeyException”,原因:'[
addObserver:
forKeyPath:@“com.apple.configuration.managed”选项:1上下文:0x0]
已发送到与“com”不兼容的KVC对象
财产。”
在UserDefaults.standard中观察com.apple.configuration.managed的正确方法是什么?您可以使用KVC观察来观察对象的属性,也可以使用KVC观察来观察分配给
UserDefaults的值,但不能使用KVC观察值标识符包含句点的值,因为它用于描述分层键路径
因此,异常消息是正确的,UserDefaults
不符合com
属性的KVC;当UserDefaults
对象的com
属性所引用的apple
属性所引用对象的managed
属性被修改时,您需要得到通知
因此,您可以使用KVC在“MyDefault”更改时收到通知,但不能在“My.Default”更改时收到通知。如果无法更改默认用户的名称,则需要遵守nsUserDefaultsIDChangeNotification
通知
这不是的副本。这里的问题是关键路径中的点,这个问题没有解决。我想这可能会使我的问题看起来像是重复的,我只是没有意识到“.”是这个错误的原因…问题的根本原因是相同的,但是NSUserDefaults
符合KVO,而NSDictionary
不符合,因此,我认为没有必要重复关闭。