[swift-users] #selector with Swift 3?
Marco S Hyman
marc at snafu.org
Fri Jun 17 13:10:44 CDT 2016
> On Fri, Jun 17, 2016 at 9:33 PM, Maury Markowitz via swift-users <swift-users at swift.org> wrote:
> I was asked to try out the latest betas of Cocoa to check if a SceneKit bug I reported has been fixed. As part of this I decided to try an update to Swift 3. I've run into a number of minor issues, but one has me frustrated. In my menu validate method, I have:
>
> switch menuItem.action {
> case #selector!(showRescale) :
>
> This worked fine in 2.2, but now it complains that it expects a ( after #selector. Removing the ! fixes that problem, but now returns an error that there's a missing !, which it inserts to cause the original error again. I also tried placing it after the ()'s, and now it complains that it's expecting the :
>
> Does anyone know the proper Swift 3 syntax for this?
This code snippet works for me in a menu validation function...
guard let action = anItem?.action else { return false }
switch action {
case #selector(showOpenPanel(_:)):
return true
case #selector(save(_:)):
return modified
case #selector(openPreferencesWindow(_:)):
return true
default:
print("default for item \(anItem)")
}
return false
I used the guard let... to get around the fact that action selectors are now optionals.
More information about the swift-users
mailing list