2015-04-02 45 views
2

我從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

回答

1

您可以創建UInt16從任何整數n只需 與UInt16(n)。在你的情況:

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

})