尝试下面的代码,不编译
if button.keyEquivalentModifierMask & NSEventModifierFlags.CommandKeyMask != 0 {
}
在Swift中检查位掩码的正确方法是什么?
答案 0 :(得分:3)
我没有足够的积分发表评论但是@Greg Parker,在Swift 2中有一个更简洁的方式。 NSEventModifierFlags是一个OptionSetType枚举。可以使用contains()方法检查标志。所以......就像......
NSEvent.modifierFlags().contains(.ShiftKeyMask)
...作品。不是最短的代码,而是整洁的。
(如果有人能给我一些积分,我可以直接在下次评论!)
答案 1 :(得分:2)
keyEquivalentModifierMask
是Int
,而NSEventModifierFlags.CommandKeyMask
是类似于枚举的UInt
原始值,因此您必须从中读取rawValue
并将keyEquivalentModifierMask
转换为Uint
:
if UInt(button.keyEquivalentModifierMask) & NSEventModifierFlags.CommandKeyMask.rawValue > 0 {
}