"'NSOffState'在Swift中不可用"

Foo*_*lOS 7 xcode ios swift swift4 xcode9

我有一个名为clearControllersInView()的简单函数的NSView扩展,它接受视图中的所有控制器并将它们设置为默认值(即关闭,弹出和组合到第一个菜单项,textfields到空字符串的复选框).在Swift 3下我没有遇到任何问题.

我正在使用Xcode 9的当前测试版并将此扩展更新为Swift 4.问题出在部分处理复选框中,当我尝试将复选框设置为NSOffState时,我收到错误"'NSOffState'在Swift中不可用" :

if item is NSButton {
    let checkbox = item as? NSButton
    checkbox?.state = **NSOffState**  -- *'NSOffState' is unavailable in Swift*
}
Run Code Online (Sandbox Code Playgroud)

我在这个程序的其他地方得到了同样的错误,我检查了一个复选框的值.我能够通过对控制器的原始值检查临时固定的情况下:
如果checkbox.state == NSOnState - 错误
如果checkbox.state.rawValue == 1 - 没有错误

通过搜索此处或Google一般无法找到解决方案.任何帮助将不胜感激!

vad*_*ian 12

首先⌥-clickstate您会看到

在此输入图像描述

类型state已更改为NSControl.StateValue,这显然是枚举或结构.

所以只需键入.并使用代码完成

在此输入图像描述


PS:if item is NSButton你可以安全地写

let checkbox = item as! NSButton
Run Code Online (Sandbox Code Playgroud)

或者更好地使用可选绑定

if let checkbox =  item as? NSButton { ...
Run Code Online (Sandbox Code Playgroud)