如何在Swift中将Int转换为unsigned short

时间:2015-04-02 08:21:47

标签: objective-c swift

我在Swift项目的Objective-C库中有以下函数:

- (DDHotKey *)registerHotKeyWithKeyCode:(unsigned short)keyCode modifierFlags:(NSUInteger)flags task:(DDHotKeyTask)task {
    // ...
}

我试图通过以下代码从Swift调用此函数:

    hotKeyCenter.registerHotKeyWithKeyCode(
        kVK_ANSI_V,
        modifierFlags: NSEventModifierFlags.ControlKeyMask.rawValue,
        task: { _ in
            // ...
        }
    )

不幸的是,它给了我以下错误:

  

缺少参数' action'的参数。在电话中

但是,如果我将kVK_ANSI_V更改为任何这样的数字

    hotKeyCenter.registerHotKeyWithKeyCode(
        34,
        modifierFlags: NSEventModifierFlags.ControlKeyMask.rawValue,
        task: { _ in
            // ...
        }
    )

代码编译没有任何错误。

如您所知,碳框架中定义的kVK_ANSI_V

var kVK_ANSI_V: Int { get }

如您所见,它具有Int类型,而方法的keyCode参数具有unsigned short类型。

如何将Int投射到unsigned short?有没有办法解决这个错误?

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以简单地从任何整数UInt16创建nUInt16(n)。在你的情况下:

hotKeyCenter.registerHotKeyWithKeyCode(
    UInt16(kVK_ANSI_V),
    modifierFlags: NSEventModifierFlags.ControlKeyMask.rawValue,
    task: { _ -> Void in

})