如何投放诠释为无符号短斯威夫特
问题描述:
我从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
类型。
我该如何投Int
到unsigned short
?有没有办法解决这个错误?
在此先感谢。
答
您可以创建UInt16
从任何整数n
只需 与UInt16(n)
。在你的情况:
hotKeyCenter.registerHotKeyWithKeyCode(
UInt16(kVK_ANSI_V),
modifierFlags: NSEventModifierFlags.ControlKeyMask.rawValue,
task: { _ -> Void in
})
你有没有尝试铸造到UInt?即UInt(kVK_ANSI_V)? – giorashc 2015-04-02 08:27:52
@giorashc不幸的是,它不起作用 - 同样的错误 – FrozenHeart 2015-04-02 08:31:39
objc中的无符号短short是2字节,所以也许UInt16会工作? – giorashc 2015-04-02 08:38:32