Xcode Can';t在Swift 2.0中正确使用NSEventModifierFlags
我正试图在Xcode 7(7A120f)中开发一个小型Mac应用程序,但它不允许我这么做。据称,此代码段存在错误:Xcode Can';t在Swift 2.0中正确使用NSEventModifierFlags,xcode,swift,cocoa,swift2,Xcode,Swift,Cocoa,Swift2,我正试图在Xcode 7(7A120f)中开发一个小型Mac应用程序,但它不允许我这么做。据称,此代码段存在错误: let composeHotKey = DDHotKey(keyCode: UInt16(kVK_Return), modifierFlags: NSEventModifierFlags.CommandKeyMask | NSEventModifierFlags.ShiftKeyMask, task: { event in self.doSomething() }
let composeHotKey = DDHotKey(keyCode: UInt16(kVK_Return), modifierFlags: NSEventModifierFlags.CommandKeyMask | NSEventModifierFlags.ShiftKeyMask, task: {
event in
self.doSomething()
})
尝试编译我的应用程序会导致Xcode生成失败,并显示以下错误消息,同时突出显示NSEventModifierFlags.CommandKeyMask | NSEventModifierFlags.ShiftKeyMask
部分:
二进制运算符“|”不能应用于两个NSEventModifierFlags操作数
发生什么事了?根据我在网上找到的所有信息,我应该能够做到这一点。在Swift 2中,像
NSEventModifierFlags
这样的位字段样式枚举作为选项集类型的子类型导入Swift。它们不像在C(或Swift 1.x)中那样使用位旋转语法
相反,这些类型使用反映集合逻辑的方法和语法。您可以使用集合文字创建一个:
let composeHotKey = DDHotKey(keyCode: UInt16(kVK_Return), modifierFlags: .CommandKeyMask.rawValue | .ShiftKeyMask.rawValue, task: {
event in
self.doSomething()
})
我手头没有Mac电脑可供检查,但这可能是NSEventModifierFlags
作为选项集导入Swift的情况。这些不使用像C(或Swift 1.x)中那样的位旋转语法。。。请尝试使用set-literal:modifierFlags:[.CommandKeyMask.ShiftKeyMask]
这就是问题所在,感谢您的解决方案!你能把它作为一个答案转发给我吗?我不得不对DDHotKey的初始值做一些修改,因为它期望一个UInt而不是NSEventModifierFlags,但是现在一切都正常了。再次感谢!
NSEventModifierFlags(rawValue: NSEventModifierFlags.NumericPadKeyMask.rawValue | NSEventModifierFlags.NumericPadKeyMask.rawValue)