gpt4 book ai didi

objective-c - Cocoa 绑定(bind)调用 valueForKey : instead of valueForKeyPath:

转载 作者:搜寻专家 更新时间:2023-10-30 20:27:45 24 4
gpt4 key购买 nike

我有一个绑定(bind)到子类对象的 NSPopUpButton,并覆盖了以下方法:

- (id)valueForKeyPath:(NSString *)keyPath {
NSLog(@"valueForKeyPath: %@", keyPath);
if ([keyPath hasSuffix:@"availableVoices.name"]) {
return self.availableVoiceNames;
} else {
return [super valueForKeyPath:keyPath];
}
}

- (id)valueForKey:(NSString *)key {
NSLog(@"valueForKey: %@", key);
return [super valueForKey:key];
}

绑定(bind)如下:

  • 内容 -> Object.availableVoices
  • 内容值 -> Object.availableVoices.name

不是调用 [Object valueForKeyPath:@"availableVoices.name"],而是在键路径中的每个键上调用 valueForKey:availableVoices 没有 name 的定义,所以它崩溃了。

valueForKey: 是否应该在 valueForKeyPath: 之后调用?

最佳答案

您的评论表明了您所看到的原因。如果“Content”路径必须是“Content Values”的前缀,那么首先获取前者,然后获取相对于它的后者是有道理的。此外,尽管 Cocoa Bindings 使用 KVO,但这并不意味着它必须使用valueForKeyPath

关于objective-c - Cocoa 绑定(bind)调用 valueForKey : instead of valueForKeyPath:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44988773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com