KVO不适用于com.alpha之类的键路径。

Vol*_*da2 1 key-value-observing ios observer-pattern

我的NSMutableDictionary包含简单键(@“一个”,@“两个”,@“三个”)和复杂键(@“ com.alpha”,@“ com.beta”)。是否可以将观察者用于复杂的键?

观察者使用简单的键可以很好地工作,但是不能使用复杂的键。有什么解决办法?

[self.dict addObserver:self forKeyPath:@"com.alpha" options:NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew context:nil];

-(IBAction) onChange:(id)sender
{
 [self.dict setObject:@"newValue" forKey:@"com.alpha"];
}

-(void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
  NSLog(@"____ value had changed");
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*n R 5

不能将包含点.的键用于键值编码或键值观察。点用于构建键路径,该键路径用于指定要遍历的对象属性序列。(请参阅“键值编码编程指南”中的键和键路径。)

例如,

id x = [object valueForKeyPath:@"com.alpha"];
Run Code Online (Sandbox Code Playgroud)

是相同的

id x = [[object valueForKey:@"com"] valueForKey:@"alpha"];
Run Code Online (Sandbox Code Playgroud)

对于单个键“ com.alpha”,您将不得不将其重命名为“ com_alpha”。