枚舉定義了一組具備相關性的數據,是開發者能夠再帶嗎中以一個安全的方式來使用這些值,以又助於提供代碼的可讀性。
在Swift中,枚舉能夠分紅兩種:任意類型的枚舉和指定類型的枚舉,結構以下:安全
//任意類型的枚舉 enum EnumTest01{ } //指定類型的枚舉 在指定類型的枚舉中不能是空的 enum EnumTest02:String{ }
任意枚舉成員時要注意的問題:
一、在具備任意枚舉類型中,能夠將其中的成員定位爲不一樣的類型
二、在任意的類型中,能夠不定義成員,從而造成一個空的枚舉類型
定義指定的枚舉成員的注意的問題:
一、在指定數據類型的枚舉類型中,若是原始類型是整型,能夠不指定原始值。若是指定的類型非整型,需指定原始值。
二、在枚舉類型指定數據類型後,其中的成員也都爲此數據類型,不能夠定義其餘類型。
三、在爲成員指定原始值時,原始值必須爲惟一標識的。
四、在指定數據類型的枚舉類型,必須使用case關鍵字定義成員。若是沒有定義成員的話將會報錯。
指定類型的枚舉的定義成員:code
enum Enum_names:String{ case name_01 = "name_01" case name_02 = "name_02" case name_03 = "name_03" case name_04 = "name_04" } enum Enum_age:Int{ case age1 case age2 case age3 = 20 case age4 }
在這裏Enum_names:String中的成員都是必須賦值的,可是在Enum_age:Int有時候是沒有必要進行賦值的,如上面的.age1的沒有賦值起原始值爲0,age2的原始值爲1 若是賦值後如:age3的原始值爲20 age4的原始值是21 ,總結就是在沒有賦值的狀況下第一個成員爲0,之後遞增1若是進行了賦值,從賦值開始後面依次遞增1。打印原值的方法以下:開發
print(Enum_age.age1.rawValue);
以此進行類推獲取其餘成員的原始值。
固然了也能夠從原始值獲取枚舉的成員值,代碼以下:it
let ageEnum = Enum_age(rawValue: 20) let nameEnum = Enum_names(rawValue: "name_01")
在任意類型的枚舉類型中,能夠定義任意的成員,這些成員是沒有值的,在實例化時能夠定義此成員的相關信息,這些信心稱爲相關值。定義以下面代碼:數據類型
enum Barcode{ case UPCA(Int,Int,Int) case QString(String,String,String) }
將枚舉成員和switch語句進行匹配時,switch語句必需要和每個枚舉成員進行匹配,不能夠有遺漏,若是開發者不須要匹配每個枚舉成員,能夠提供一個默認的default分之來涵蓋全部沒有明確匹配的成員。方法
如:總結
let name:Enum_names = .name_01 //使用default switch name { case .name_01: //打印原值 print(name.rawValue); break; default: print("沒有找到") } //不使用default let age:Enum_age = .age2 switch age { case .age1: print(age.rawValue) case .age2: print(age.rawValue) case .age3: print(age.rawValue) case .age4: print(age.rawValue) } //相關值的switch的匹配 let barcodeTemp = Barcode.QString("1", "2", "3") switch barcodeTemp { case .QString(let str,let str02,let str03): print(str + str02 + str03) default: print("沒有找到") }