#selector(Thing.thingWatched) won't work because it expects a function. As thingWatched is a property, it doesn't know if you want to reference the getter or setter. SE-0064 lets you reference those explicitly. In this case, you could write NSStringFromSelector(#selector(getter: Thing.thingWatched)), which is far from elegant. SE-0062 is there to fix that: #keyPath(Thing.thingWatched) will return the correct string.
Sent from my iPhone > On 04 Jun 2016, at 16:18, Rob Napier <[email protected]> wrote: > > Currently KVO requires hard-coding strings to check the keypath. Does SE-0064 > cover returning a string when a string is required? For example: > > override func observeValueForKeyPath(keyPath: String?, > ofObject object: AnyObject?, > change: [String : AnyObject]?, > context: UnsafeMutablePointer<Void>) { > if let changingThing = object as? Thing, > keyPath = keyPath where changingThing === thing { > > switch keyPath { > case "thingWatched": ... > > I'd like to replace that last line with: > > case #selector(Thing.thingWatched): > > Or something similarly non-stringy. > > Alternately, this comes back to your "Referencing Objective-C key-paths" > proposal, but I'm wondering if 0064 already covers this case. > > -Rob
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
