QED*_*QED -2 objective-c bit-fields swift
我NS_OPTIONS在 Objective-C 中给出了一个定义:
typedef NS_OPTIONS(NSInteger, MyType) {
MyTypeOption1 = 1 << 0,
MyTypeOption2 = 1 << 1,
MyTypeOption3 = 1 << 2,
// etc
}
Run Code Online (Sandbox Code Playgroud)
我正在将此类型导入 Swift,但无法形成位字段。
let default : MyType = MyTypeOption1 | MyTypeOption2
Run Code Online (Sandbox Code Playgroud)
错误:
Protocol 'BinaryInteger' requires that 'MyType' conform to 'BinaryInteger'
Run Code Online (Sandbox Code Playgroud)
IDE 表明问题出在常设冒号按位或运算符。
改变NS_OPTIONS声明或用 Swift 声明新类型OptionSet不是……选项。我怎样才能让 Swift 打球?
你的语法根本就是错误的。位字段的 Swift 语法(实际上OptionSet在 Swift 中称为 an)是数组语法,而不是按位 OR 语法。
使用创建的 Objective-C 枚举NS_OPTIONS会自动作为OptionSets 导入到 Swift 中。
所以你只需要这样做,let default: MyType = [.option1, .option2]而不是尝试复制 Obj-C 位域语法。
有关该主题的更多信息,请参阅如何在 Swift 中创建 NS_OPTIONS 样式的位掩码枚举?
| 归档时间: |
|
| 查看次数: |
912 次 |
| 最近记录: |