“’NSOffState’在Swift中不可用”
我有一个名为clearControllersInView()的简单函数的NSView扩展,它接受视图中的所有控制器并将它们设置为默认值(即关闭复选框,弹出框和组合到第一个菜单项,文本字段为空字符串)。 在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* }
我在这个程序的其他地方得到了同样的错误,我检查了一个复选框的值。 我能够通过检查控制器原始值来临时修复这些实例:
如果checkbox.state == NSOnState – 错误
如果checkbox.state.rawValue == 1 – 没有错误
通过搜索此处或Google一般无法找到解决方案。 任何帮助将不胜感激!
首先⌥点击你将看到的state
state
类型已更改为NSControl.StateValue
,这显然是枚举或结构。
所以只需输入.
并使用代码完成
PS: if item is NSButton
你可以安全地写
let checkbox = item as! NSButton
或者更好地使用可选绑定
if let checkbox = item as? NSButton { ...