1. 枚举语法

enum 枚举名称 {

    枚举成员

}

例如, 现在想要创建一个上班人员等级系统 :

enume Employee {

    case 总经理

    case 区域经理

    case 主管

    case 业务员

}

同样可以写成一行的形式 :

enume Employee {

    case 总经理,区域经理,主管,业务员

}

2. 枚举成员的访问和编辑

枚举成员的访问

enum eEmployee {

    case 总经理

    case 区域经理

    case 主管

    case 业务员

}

print(eEmployee.总经理) //结果 : 总经理

枚举成员的编辑 : 编辑后的值必须是枚举中已有的枚举成员

enum eEmployee {

    case 总经理

    case 区域经理

    case 主管

    case 业务员

    case 临时工

}

var employee = eEmployee.业务员

employee = .临时工

print(employee) //结果 : 临时工

3. 枚举值的遍历

我们通常使用 switch 语句进行枚举值的遍历

enum eEmployee {

    case 总经理

    case 区域经理

    case 主管

    case 业务员

}

let employee = eEmployee.总经理

switch employee{

    case eEmployee.总经理 :

        print("您好, 总经理!")

    case eEmployee.区域经理 :

        print("您好, 区域经理!")

    case eEmployee.主管 :

        print("您好, 主管!")

    case eEmployee.业务员 :

        print("您好, 业务员!")

}

print(employee) //结果 : 您好, 总经理!

4. 枚举的原始值

枚举成员可以使用相同类型的默认值, 这些默认值被称为枚举的原始值

数字

enum eGender : UInt8{

    case Male = 1

    case Female = 2

    case Unknown = 3

}

在操作存储整数或者字符串类型的原始值枚举的时候, Swift 可以自动为没有分配原始值的成员分配对应的原始值, 则可以得到上面代码的简化版本 :

enum eGender : UInt8 {

    case Male = 1, Female, Unknown

}

从第二个枚举成员开始, 后面每一个成员的原始值都比前一个成员的原始值大 1

如果第一个成员没有对应的原始值, 那么 Swift 默认第一个成员原始值为 0

String 类型的原始值默认为成员本身

Swift 中提供了 rawValue 属性来访问一个枚举成员的原始值

enum eEmployee : Double {

    case 总经理

    case 区域经理

    case 主管

    case 业务员

}

let employee = eEmployee.区域经理

print(eEmployee.区域经理.rawValue) //结果 : 1.0

enum eNewEmployee : String {

    case 总经理

    case 区域经理

    case 主管

    case 业务员

}

let newEmployee = eNewEmployee.区域经理

print(eEmployee.区域经理.rawValue) //结果 : 总经理

5. 枚举的方法

如果你想在枚举中添加类似于函数一类的, 使枚举有更多的用途, 称为给枚举添加方法

enum eGender : UInt8 {

    case Male, Female, Unknown

    func description() {

        switch self {

            case.Male :

                print("Hi, man!")

            case.Female :

                print("Hi, lady!")

            case.Unknown

                print("Hi!")

        }

    } //这里给 eGender 枚举添加了一个名为 description() 的方法

}

let people = Gender.Female

people.description() //结果 : Hi, lady!