我目前正在处理的一个项目中,从我所接收的KeyPath实例中获取KVC字符串将非常有用。以下是一个简短的示例:
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
将具有一个值,因为它存在以支持互操作性。 - allenh\Person.firstName
。 - matt