Swfit中枚举的总结以及使用

来源:互联网 发布:上海知恩服饰怎么样 编辑:程序博客网 时间:2024/05/29 15:58

枚举定义了一组具有相关性的数据,是开发者可以再带吗中以一个安全的方式来使用这些值,以又助于提供代码的可读性。
在Swift中,枚举可以分成两种:任意类型的枚举和指定类型的枚举,结构如下:

//任意类型的枚举enum EnumTest01{}//指定类型的枚举  在指定类型的枚举中不能是空的enum EnumTest02:String{}

任意枚举成员时要注意的问题:
1、在具有任意枚举类型中,可以将其中的成员定位为不同的类型
2、在任意的类型中,可以不定义成员,从而形成一个空的枚举类型
定义指定的枚举成员的注意的问题:
1、在指定数据类型的枚举类型中,如果原始类型是整型,可以不指定原始值。如果指定的类型非整型,需指定原始值。
2、在枚举类型指定数据类型后,其中的成员也都为此数据类型,不可以定义其他类型。
3、在为成员指定原始值时,原始值必须为唯一标识的。
4、在指定数据类型的枚举类型,必须使用case关键字定义成员。如果没有定义成员的话将会报错。
指定类型的枚举的定义成员:

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);

以此进行类推获取其他成员的原始值。
当然了也可以从原始值获取枚举的成员值,代码如下:

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//使用defaultswitch name {    case .name_01:    //打印原值    print(name.rawValue);    break;default:    print("没有找到")}//不使用defaultlet age:Enum_age = .age2switch 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("没有找到")}
0 0