需要定义一组具有相关性的数据时,往往会使用到枚举类型,枚举类型可由成员、属性、下标脚本和方法组成;枚举类型和类的构成基本相似,不同在于枚举类型比类多了成员。
枚举类型可以分为两种:没有指定数据类型(任意类型的枚举类型)和指定数据类型;定义如下
指定数据类型
enum Person:String{
}
没有指定数据类型
enum Person{
}
一.定义枚举类型的成员
case关键字不能省略,如果在一个枚举类型中定义多个成员,可以将这多个成员写在同一行:
enum Person{
case name,age,address
}
1.任意类型的枚举成员
- 不能指定原始值
enum Person{
case age=1
case name="wflyto"
}
//错误,不能指定原始值
- 可以定义不同类型的成员
enum Person{
case age(Int)
case name(String)
}
- 可以不定义成员
enum Person{
}
2.指定数据类型的枚举成员
- 没有强制要求指定原始值
二.枚举类型中成员的原始值
enum Direction:Int{
case North=0
case South=1
case East=2
case West=3
}
注意:上述定义的Int是成员的原始值(rawValue)的数据类型;而0、1、2、3代表的是成员的原始值,而并非成员。
1.通过成员访问原始值(使用rawValue属性)
enum Person:String{
case name="wflytoc"
case address="JiangSu"
}
print("\(Person.name.rawValue)")
2.通过原始值获取成员
通过构造器枚举类型名(rawValue:)
enum Person:String{
case name="wflytoc"
case address="JiangSu"
}
let nameRawValue=Person.name.rawValue
if let ori=Person(rawValue: nameRawValue){
switch ori{
case .name:
print("name")
case .address:
print("address")
}
}
三.相关值
在任意类型的枚举类型中,可以定义任意的成员,这些成员是没有值的。在实例化时,可以定义此成员的相关信息,这些信息称为相关值。
enum Person{
case name(String)
case age(Int)
}
let nameChoice=Person.name("wflytoc")
switch nameChoice {
case .name(let Name):
print("\(Name)")
case .age(let Age):
print("\(Age)")
}