南昌IOS培训
达内南昌中心

0571-56020830

热门课程

达内:Swift之枚举类型

  • 时间:2016-01-19
  • 发布:青玉伏案
  • 来源:伯乐在线


    枚举可以使你的代码更易阅读并且可以提高可维护性。在Swift语言中的枚举可谓是让人眼前一亮。在Swift中的枚举不仅保留了大部分编程语言中枚举的特性,同时还添加了一些好用而且实用的新特性,南昌达内IOS培训专家来给大家讲解Swift之枚举类型。

    一、定义枚举

    在Swift中枚举的定义与其他编程语言中定义枚举不同,在每个枚举元素前面多了一个关键字case,  case后紧跟的是枚举元素,下面是定义枚举类型的两种方式。

    1. 多个case, 每个枚举元素前都有个case


//枚举的定义
 enum KindOfAnimal {
     case Cat
     case Dog
     case Cow
     case Duck
     case Sheep
 }


    2.一个case搞定所有元素,枚举元素之间使用逗号隔开


//你也可以这样定义枚举类型
 enum KindOfAnimalTwo {
     case Cat, Dog, Cow, Duck, Sheep
 }


    二、枚举类型的使用

    定义完枚举类型就是为了使用的对吧,直接使用枚举类型声明变量即可, 在Swift中是不需要typedef来定义枚举类型的,我们可以直接使用枚举类型。


//定义枚举变量并赋值
var animal1: KindOfAnimal = KindOfAnimal.Cat


    给枚举变量赋值时也可以把枚举类型名省略掉,因为在声明枚举变量时就已经指定了枚举变量的类型。


var animal2: KindOfAnimal = .Dog


    在Switch中使用我们的枚举变量


//在Switch…Case中使用枚举
switch animal1  {
    case KindOfAnimal.Cat:
        println("Cat")
    case KindOfAnimal.Dog:
        println("Dog")
    case KindOfAnimal.Cow:
        println("Cow")
    case KindOfAnimal.Duck:
        println("Duck")
    case KindOfAnimal.Sheep:
        println("Sheep")
    default:
        println("error = 呵呵")
}


    三、给枚举成员赋值

    在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中的枚举值如果是整数的话,第一个赋值后,后边的会自增的。关于枚举值自增,直接附上实例。 


//枚举值自增
enum Hour: Int{
    case One = 1
    case Two
    case Three
    case Four
    case Five
    case Six
    case Seven
    case Eight
}

var hourTest: Int = Hour.Eight.rawValue
println(hourTest)      // hourTest = 8


    六、枚举关联值

    什么是枚举的关联值呢?就是在给枚举变量赋值时,给枚举变量关联一个值。在Swift中如何做的呢?就是在声明枚举类型中的元素时使用小括号来制定关联值的类型,然后在给枚举变量赋值的时候关联一个或者多个值即可,直接看实例。

    下面的代码是给iOS指定了两个String类型的关联值,在给枚举变量赋值的时候关联两个值。关联这两个值可以在Switch语句中进行使用。


//枚举的关联值
enum mobileLanguage{
    case IOS (String, String)
    case Android (String)
}

var iPhone: mobileLanguage = mobileLanguage.IOS("Objective-C", "Swift")

switch iPhone {
    case  mobileLanguage.IOS(let language1, let language2):
        println("language1 = (language1), language2 = (language2)")

    case mobileLanguage.Android(let temp):
        println(temp);
    default:
        println("NO")
}

//输出结果:language1 = Objective-C, language2 = Swift


    七、枚举函数

    在Swift中的枚举是可以添加函数的,有没有眼前一亮呢。下面的代码段是在上面的关联值代码的基础上添加了一个描述函数,返回的就是当前枚举变量的枚举信息,如下代码段所示:


//枚举函数
enum mobileLanguageFun{
    case IOS (String, String)
    case Android (String)
    //定义枚举函数
    var description: String{
        switch self {
            case  mobileLanguageFun.IOS(let language1, let language2):
                return "language1 = \(language1), language2 = \(language2)"

            case mobileLanguageFun.Android(let temp):
                return temp
            default:
                return ("NO")
        }

    }
}

var myMobile: mobileLanguageFun = mobileLanguageFun.IOS("objc", "swift")

println(myMobile.description)  //language1 = objc, language2 = swift


    以上就是达内IOS培训专家讲解的有关swift枚举类型的知识了。







原文链接:http://ios.jobbole.com/83780/
上一篇:苹果iOS 9.3 beta带来的启示
下一篇:达内:Swift之字符串String

达内iOS班学员整班高薪就业,专科生最高薪资15000

达内iOS班学员就业喜人,最高薪资12000

795万高校毕业生创历史新高,2017届毕业生就业近况几何?

达内Linux学员毕业2周就业率96%,最高薪资10000元

选择城市和中心
贵州省

广西省

海南省

台湾