This code compiles just fine:
@objcMembers final class DriversLicense1: NSObject {
private let map: [String: ReferenceWritableKeyPath<DriversLicense1, String>] = [
"DAA": \DriversLicense1.nameFull,
]
private(set) var nameFull: String = ""
override init() {
super.init()
for (key, keyPath) in map {
self[keyPath: keyPath] = key
}
}
}
However, this code will not - the error is:
cannot convert value of type 'KeyPath<DriversLicense2, String>' to expected dictionary value type 'ReferenceWritableKeyPath<DriversLicense2, String>'
fileprivate let map: [String: ReferenceWritableKeyPath<DriversLicense2, String>] = [
"DAA": \DriversLicense2.nameFull,
]
@objcMembers final class DriversLicense2: NSObject {
private(set) var nameFull: String = ""
override init() {
super.init()
for (key, keyPath) in map {
self[keyPath: keyPath] = key
}
}
}
Why is this?