检查Swift中的位掩码

时间:2014-11-17 22:57:07

标签: swift

尝试下面的代码,不编译

if button.keyEquivalentModifierMask & NSEventModifierFlags.CommandKeyMask != 0 {
}

在Swift中检查位掩码的正确方法是什么?

2 个答案:

答案 0 :(得分:3)

我没有足够的积分发表评论但是@Greg Parker,在Swift 2中有一个更简洁的方式。 NSEventModifierFlags是一个OptionSetType枚举。可以使用contains()方法检查标志。所以......就像......

NSEvent.modifierFlags().contains(.ShiftKeyMask)

...作品。不是最短的代码,而是整洁的。

(如果有人能给我一些积分,我可以直接在下次评论!)

答案 1 :(得分:2)

keyEquivalentModifierMaskInt,而NSEventModifierFlags.CommandKeyMask是类似于枚举的UInt原始值,因此您必须从中读取rawValue并将keyEquivalentModifierMask转换为Uint

if UInt(button.keyEquivalentModifierMask) & NSEventModifierFlags.CommandKeyMask.rawValue > 0 {
}