Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode Can';t在Swift 2.0中正确使用NSEventModifierFlags_Xcode_Swift_Cocoa_Swift2 - Fatal编程技术网

Xcode Can';t在Swift 2.0中正确使用NSEventModifierFlags

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() }

我正试图在Xcode 7(7A120f)中开发一个小型Mac应用程序,但它不允许我这么做。据称,此代码段存在错误:

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)