有什么方法可以参考self
Swift 4 的 new KeyPath
s?
像这样工作正常,我们可以解决一个对象的属性:
func report(array: [Any], keyPath: AnyKeyPath) {
print(array.map({ $0[keyPath: keyPath] }))
}
struct Wrapper {
let name: String
}
let wrappers = [Wrapper(name: "one"), Wrapper(name: "two")]
report(array: wrappers, keyPath: \Wrapper.name)
但对我来说,解决一个对象本身似乎是不可能的:
let strings = ["string-one", "string-two"]
report(array: strings, keyPath: \String.self) // would not compile
我想应该有一些明显的方法吗?
编辑:
或者简单地说:
let s = "text-value"
print(s[keyPath: \String.description]) // works fine
print(s[keyPath: \String.self]) // does not compile