一元运算符'〜'不能应用于'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()
。
- 从nib初始化自定义的UITableViewCell,不带dequeueReusableCellWithIdentifier
- PHPhotoLibrary.requestAuthorization()不触发iOS 9上的授权提示
- 在swift tableviewcell中的文本在滚动消失
- 两个不同对象的两个数组的联合
- UIButton背景颜色突出显示/select状态问题
- 在prepareForSegue中设置destinationviewcontroller的标签文本抛出错误:意想不到地发现零时,解包可选值
- Google Sign-In Error -4
- iOS Swift检测键盘事件
- 在Swift中获取UIImage的平均颜色