Swift编程之枚举类型详解

2020-01-08 22:57:34丽君

三、给枚举成员赋值

在Swift中声明枚举时,是可以给每个枚举成员赋一个值的,下面的City枚举的成员就被指定了一个值,如下所示:


//给枚举赋值
enum City: String{
 case Beijing = "北京"
 case ShangHai = "上海"
 case GuangZhou = "广州"
 case ShengZhen = "深圳"
}

使用枚举变量的rawValue可以获取给每个枚举成员赋的值,代码如下:


//定义枚举变量并赋值
var myInCity: City = City.Beijing

//获取枚举变量的值
var myInCityString: String = myInCity.rawValue;
println(myInCityString) //输出:北京

四、通过枚举成员的值给枚举变量赋值

什么是通过枚举成员的值给枚举变量赋值呢?举个例子,以上面的枚举类型City为例,假如我们只知道一个枚举成员的值是“北京”,而不知道“北京”这个值对应的枚举成员是"Beijing", 在Swift中是可以通过“北京”这个值给枚举变量赋一个枚举成员“Beijing”的。

是不是有点绕啊,来点实例吧,下面就是通过枚举成员的原始值给枚举变量赋值的代码


//通过枚举成员的值,来给枚举成员赋值
var youInCity: City? = City(rawValue: "北京");

为啥我们的youInCity是可选值类型的呢?原因很简单,我们不确定枚举City中的成员的值是否含有“北京”,枚举变量youInCity的值是不确定的,所以喽是可选类型的,下面我们就取出youInCity的值,首先判断youInCity是否为City.Beijing, 如果是,说明赋值成功就输出值。


//取出youInCity中的值
if youInCity == City.Beijing {
 var cityName: NSString = youInCity!.rawValue
 println(cityName) //输出:北京
}

找一个枚举成员的值中不包含的字符串用来给枚举变量赋值,观察一下结果,下面的testCity的值打印出来为nil, 因为枚举中没有一个成员的值为“京”。


//传入一个枚举中没有的值
var testCity: City? = City(rawValue: "京");

// testCity为nil
println(testCity)

五、枚举值自增

好东西还是要保留的,在Swift中的枚举值如果是整数的话,第一个赋值后,后边的会自增的。关于枚举值自增就不多说了,直接看实例吧。