gpt4 book ai didi

swift - 'NSString' 不可转换为 'DictionaryIndex'

转载 作者:行者123 更新时间:2023-11-28 07:17:19 26 4
gpt4 key购买 nike

我尝试将一些 objective-c 代码重写为 swift。现在我得到一个非常奇怪的错误。我在 playgroud 中尝试了代码,完全没有受到其他代码的影响。

这是我要翻译的部分:

NSDictionary *info = [self infoForBinding:@"theBinding"];
[[info objectForKey:NSObservedObjectKey]
setValue:MyValue
forKeyPath:[info objectForKey:NSObservedKeyPathKey]];

这是我试过的代码:

class x: NSButtonCell {

func a() {
var info = infoForBinding("theBinding")
info[NSObservedObjectKey]?.setValue(nil, forKeyPath: info[NSObservedKeyPathKey])
}

}

现在我收到错误 'NSString' is not convertible to 'DictionaryIndex<NSObject, AnyObject>' .有什么想法吗?

更新:

这是有效的...我不知道为什么。

info[NSObservedObjectKey]?.setValue(MyValue forKeyPath: (info[NSObservedKeyPathKey] as NSString))

最佳答案

原因

info[NSObservedObjectKey]?.setValue(MyValue forKeyPath: (info[NSObservedKeyPathKey] as NSString))

有效的是,从 beta 3 开始,NSDictionary#getValue 方法返回一个 DictionaryIndex 对象,而不是将其转换为 NSObject/AnyObject。通过显式转换它(这是一种很好的做法,因为 Swift 设计者似乎反对过多的隐式转换),您可以安全地将它传递到 setValue 中而不会产生任何骚动。

关于swift - 'NSString' 不可转换为 'DictionaryIndex<NSObject, AnyObject>',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25100166/

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