无法调用' =='使用类型'(UInt16,UInt16)的参数列表'?

时间:2014-10-22 10:17:38

标签: macos swift

为什么这不起作用并产生"无法调用' =='使用类型'(UInt16,UInt16)'?" 错误的参数列表:

func performKeyEquivalent(theEvent: NSEvent) -> Bool {
    let keyCode = theEvent.keyCode

    return keyCode == kVK_Return as UInt16
}

这有效:

func performKeyEquivalent(theEvent: NSEvent) -> Bool {
    let keyCode = theEvent.keyCode

    return keyCode == UInt16(kVK_Return)
}

1 个答案:

答案 0 :(得分:1)

我认为kVK_Return是#define或const整数,并且您正在尝试转换为unsigned int。在swift中,没有从一种类型到另一种类型的隐式或显式转换,即使它是关于概念上相似的类型,如有符号和无符号整数。

而不是强制转换,您必须显式转换,以及您在第二段代码中执行的操作:您创建一个使用带符号整数初始化的UInt16的新实例。