我们知道OC中有按位枚举这种数据类型,具体说明以及用法可以参考:
http://www.jianshu.com/p/600402ed85df
这里不做说明
目录
1 举例说明如何识别普通枚举和按位枚举
2 Swift中如何使用按位枚举
�1 � 举例说明如何识别普通枚举和按位枚举
//普通枚举
public enum UIControlContentHorizontalAlignment : Int {
case center
case left
case right
case fill
}
//按位枚举
public struct UIControlState : OptionSet {
public init(rawValue: UInt)
public static var normal: UIControlState { get }
public static var highlighted: UIControlState { get } // used when UIControl isHighlighted is set
public static var disabled: UIControlState { get }
public static var selected: UIControlState { get } // flag usable by app (see below)
@available(iOS 9.0, *)
public static var focused: UIControlState { get } // Applicable only when the screen supports focus
public static var application: UIControlState { get } // additional flags available for application use
public static var reserved: UIControlState { get } // flags reserved for internal framework use
}
最大的区别是"声明格式"不同
普通枚举声明格式:
public enum 枚举名称: 枚举值类型 {
case 枚举值1
case 枚举值2
....
}
按位枚举声明格式:
public struct 枚举名称 : OptionSet {
public static var 枚举值1: 枚举名称 { get }
public static var 枚举值2: 枚举名称 { get }
...
}
2 Swift中按位枚举的使用方法: 用中括号括起来,中间用逗号分隔(类似OC中的数组,在Swift中叫元组)
例:
但是需要注意的是: 此用法不得先定义变量,然后传值,必须要在使用按位枚举的地方直接将枚举值用中括号括起来,用逗号分隔开!
不然会报类型不匹配的错误
例:
正确代码为: