Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.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
Ios 已发送到与KVC不兼容的对象;com“;财产_Ios_Swift_Cocoa - Fatal编程技术网

Ios 已发送到与KVC不兼容的对象;com“;财产

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中的键:com.apple.configuration.managed下的值,所以我这样做了:

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
不符合,因此,我认为没有必要重复关闭。