Xamarin.Forms(iOS 14.1)使用带点的键don';不要被触发

Xamarin.Forms(iOS 14.1)使用带点的键don';不要被触发,xamarin.forms,xamarin.ios,Xamarin.forms,Xamarin.ios,我是做错了什么还是这是一个错误 此代码有效(可观察对象被调用) 但是这个没有 NSUserDefaults.StandardUserDefaults.AddObserver(this, "sectionname.mykey", NSKeyValueObservingOptions.New, IntPtr.Zero); NSUserDefaults.StandardUserDefaults.SetString("test", "sectionnam

我是做错了什么还是这是一个错误

此代码有效(可观察对象被调用)

但是这个没有

NSUserDefaults.StandardUserDefaults.AddObserver(this, "sectionname.mykey", NSKeyValueObservingOptions.New, IntPtr.Zero);
NSUserDefaults.StandardUserDefaults.SetString("test", "sectionname.mykey");

键路径的工具提示显示“用于执行值查找的键路径。键路径由一系列小写ASCII字符串组成,其中没有用点字符分隔的空格”,但如果添加点,则不会调用可观察对象。

因为
NSObject
不支持在iOS中使用这种方式设置键,内部错误将显示如下所示:

Foundation.MonoTouchException:'引发Objective-C异常。名称:NSUnknownKeyException原因:[addObserver:forKeyPath:@“sectionname.mykey”选项:1上下文:0x0]已发送到与“sectionname”属性不兼容KVC的对象

如果需要为
sectionname
的属性指定观察者,可以使用以下代码:

// Sectionname should be a NSobject object and have observer notification 
Sectionname sectionname = new sectionname();
sectionname.AddObserver(this, "smykey", NSKeyValueObservingOptions.New, IntPtr.Zero);

哦,这很有道理!我在阅读工具提示,就好像它告诉我键的命名约定一样,实际上它告诉我“这不仅仅是一个字符串,它是用于查找您想要观察的值的路径”。那完全是我的错。
// Sectionname should be a NSobject object and have observer notification 
Sectionname sectionname = new sectionname();
sectionname.AddObserver(this, "smykey", NSKeyValueObservingOptions.New, IntPtr.Zero);