"' NSOffState'没有Swift"

时间:2017-09-12 17:01:12

标签: ios swift xcode swift4 xcode9

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

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

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一般来说,无法找到解决方案。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:10)

首先⌥-点击 state您会看到

enter image description here

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

只需输入.并使用代码完成

即可

enter image description here

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

let checkbox = item as! NSButton

或者更好地使用可选绑定

if let checkbox =  item as? NSButton { ...