I have an extension of NSView with a simple function called clearControllersInView() which takes all the controllers in the view and sets them to a default value (i.e. checkboxes to off, popups and combos to first menu item, textfields to empty string). I had no problems with this under Swift 3.
I'm using the current beta of Xcode 9 and updating this extension to Swift 4. The problem is in the section handling checkboxes where I'm getting the error "'NSOffState' is unavailable in Swift" when trying to set the checkbox to NSOffState:
if item is NSButton {
let checkbox = item as? NSButton
checkbox?.state = **NSOffState** -- *'NSOffState' is unavailable in Swift*
}
I was getting the same error elsewhere in this program where I check the value of a checkbox. I was able to temporarily fix those instances by checking against the controllers raw value:
if checkbox.state == NSOnState -- error
if checkbox.state.rawValue == 1 -- no error
Wasn't able to find a solution by searching here or Google in general. Any help would be greatly appreciated!
First ⌥-click on state
you will see
The type of state
has been changed to NSControl.StateValue
, that's clearly an enum or a struct.
So just type .
and use code completion
PS: if item is NSButton
you can safely write
let checkbox = item as! NSButton
or still better use optional bindings
if let checkbox = item as? NSButton { ...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With