如何投放诠释为无符号短斯威夫特

问题描述:

我从Objective-C的库斯威夫特项目中的以下功能:如何投放诠释为无符号短斯威夫特

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

我想通过下面的代码来调用雨燕这个函数:

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

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

Missing argument for parameter 'action' in call

但是,如果我改变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类型。

我该如何投Intunsigned short?有没有办法解决这个错误?

在此先感谢。

+0

你有没有尝试铸造到UInt?即UInt(kVK_ANSI_V)? – giorashc 2015-04-02 08:27:52

+0

@giorashc不幸的是,它不起作用 - 同样的错误 – FrozenHeart 2015-04-02 08:31:39

+1

objc中的无符号短short是2字节,所以也许UInt16会工作? – giorashc 2015-04-02 08:38:32

您可以创建UInt16从任何整数n只需 与UInt16(n)。在你的情况:

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

})