对于我目前正在处理的项目,从我的方法正在接收的KeyPath实例中获取KVC字符串将非常有用。简单的例子:是否有可能从Swift 4 KeyPath获取KVC-String?
struct Person {
var name: String
}
let propertyCache = ["name": "something"]
func method<T>(_ keypath: KeyPath<Person, T>) -> T? {
let kvcName = keypath.kvc
return propertyCache[kvcName]
}
这似乎不是很有用,但在我的项目是:)我发现的keyPath的属性称为_kvcKeyPathString
这也是公开的,但每次我试图每次返回nil
。 或者他们可能有使用反射的可能性吗?提前感谢您的想法/解决方案!
如果您用'@ objc'标记属性,'_kvcKeyPathString'将会有一个值,因为它存在支持互操作性。 –
这很有道理,谢谢!但在我的情况下,这不是一个选项:/看起来我不是唯一一个用例:https://bugs.swift.org/browse/SR-5821 – Ben
Swift KeyPath功能提议提到了能够在未来通过字符串在运行时建立KeyPath,所以当时我们可以获得字符串值,或者当他们决定给我们一些可观的反射能力时。 –