我們知道OC中有按位枚舉這種數(shù)據(jù)類型,具體說明以及用法可以參考:
http://www.reibang.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
}
最大的區(qū)別是"聲明格式"不同
普通枚舉聲明格式:
public enum 枚舉名稱: 枚舉值類型 {
case 枚舉值1
case 枚舉值2
....
}
按位枚舉聲明格式:
public struct 枚舉名稱 : OptionSet {
public static var 枚舉值1: 枚舉名稱 { get }
public static var 枚舉值2: 枚舉名稱 { get }
...
}
2 Swift中按位枚舉的使用方法: 用中括號括起來,中間用逗號分隔(類似OC中的數(shù)組,在Swift中叫元組)
例:
Paste_Image.png
但是需要注意的是: 此用法不得先定義變量,然后傳值,必須要在使用按位枚舉的地方直接將枚舉值用中括號括起來,用逗號分隔開!
不然會報(bào)類型不匹配的錯誤
例:
Paste_Image.png
正確代碼為:
Paste_Image.png