一元运算符'〜'不能应用于'MyType'types的操作数

我有一些自从迁移到Swift 2.0以来已经损坏的代码。 我现在得到问题标题中的错误。

message.flags = NSNumber(integer:(MCOMessageFlag(rawValue: message.flags.integerValue).intersect(~MCOMessageFlag.Seen)).rawValue) 

MyType是一个位掩码。 任何想法在Swift中改变了什么,现在产生一个错误?

编辑:

  typedef NS_OPTIONS(NSInteger, MCOMessageFlag) { MCOMessageFlagNone = 0, /** Seen/Read flag.*/ MCOMessageFlagSeen = 1 << 0, /** Replied/Answered flag.*/ MCOMessageFlagAnswered = 1 << 1, /** Flagged/Starred flag.*/ MCOMessageFlagFlagged = 1 << 2, /** Deleted flag.*/ MCOMessageFlagDeleted = 1 << 3, /** Draft flag.*/ MCOMessageFlagDraft = 1 << 4, /** $MDNSent flag.*/ MCOMessageFlagMDNSent = 1 << 5, /** $Forwarded flag.*/ MCOMessageFlagForwarded = 1 << 6, /** $SubmitPending flag.*/ MCOMessageFlagSubmitPending = 1 << 7, /** $Submitted flag.*/ MCOMessageFlagSubmitted = 1 << 8, }; 

考虑到你只是想结束一个整数无论如何:

 myObject.prop = NSNumber(integer: myObject.prop.integerValue & ~MCOMessageFlag.Seen.rawValue) 

或者,对于您的具体情况,这可能会更清楚:

 if myObject.prop.integerValue == MCOMessageFlag.Seen.rawValue { myObject.prop = NSNumber(integer: MCOMessageFlag.None.rawValue) } 

虽然罗布的答案工作,我想我也应该发表这一点。 我还在苹果开发者论坛上发布了这个问题,并收到了Chris Lattner的回复。

从swift 2开始,选项集现在是类似的,这意味着你不能用〜来反转它们

所以,而不是intersect()我可以使用subtractInPlace()