1、枚举是用来表示值的“类型”。

2、定义枚举类型“FamilyRelationshipType”

enum FamilyRelationshipType {
case GrandFather
case GrandMother
case Father
case Mother
case Brother
case Sister
case Son
case Daughter
}

3、使用枚举,指定该成员与其他成员的关系:

struct FamilyMember {
var name: String
var relationshipType: FamilyRelationshipType init(name: String, relationshipType: FamilyRelationshipType) {
self.name = name
self.relationshipType = relationshipType
}
}
let sister = FamilyMember(name: "Jacky", relationshipType: FamilyRelationshipType.Sister)
let brother = FamilyMember(name: "Jack", relationshipType: FamilyRelationshipType

4、指定值定义枚举:

enum FamilyRelationshipType: Int {
case GrandFather = 400
case GrandMother = 500
case Father = 600
case Mother = 700
case Brother = 800
case Sister = 900
case Son = 1000
case Daugther = 1100
}

5、Switch中使用枚举实例:

static func giftFor(member: FamilyMember) -> String {
switch (member.relationshipType) {
case .GrandFather:
return "Book"
case .GrandMother:
return "Sweater"
case .Father:
return "Shirt"
case .Mother:
return "Flowers"
default:
return "Choclates"
}
}

6、Swift 中把每个枚举与它的值联合起来。

enum FamilyRelationshipType {
case GrandFather(age: Int)
case GrandMother(age: Int)
case Father(age: Int)
case Mother(age: Int)
case Husband(age: Int)
case Wife(age: Int)
case Brother(age: Int)
case Sister(age: Int)
case Son(age: Int)
case Daugther(age: Int)
}

完整实例,根据家庭成员的年龄大小来决定具体的礼物:

enum FamilyRelationshipType {
case GrandFather(age: Int)
case GrandMother(age: Int)
case Father(age: Int)
case Mother(age: Int)
case Husband(age: Int)
case Wife(age: Int)
case Brother(age: Int)
case Sister(age: Int)
case Son(age: Int)
case Daugther(age: Int) func gift() -> String {
switch(self) {
case .Brother(let age):
if age > 10 {
return "video games"
} else {
return "toys"
}
case .GrandFather:
return "Book"
case .GrandMother:
return "Sweater"
case .Father:
return "Shirt"
case .Mother:
return "Flowers"
default:
return "Choclates"
}
}
}
struct FamilyMember {
var name: String
var relationshipType: FamilyRelationshipType init(name: String, relationshipType: FamilyRelationshipType) {
self.name = name
self.relationshipType = relationshipType
}
}

至此完整的Swift下的枚举定义使用完成,顺便推荐一下个人ios开发小站http://www.iosask.com

Swift优雅的实现枚举的定义及使用的更多相关文章

  1. 窥探Swift之别样的枚举类型

    想必写过程序的童鞋对枚举类型并不陌生吧,使用枚举类型的好处是多多的,在这儿就不做过多的赘述了.Fundation框架和UIKit中的枚举更是数不胜数,枚举可以使你的代码更易阅读并且可以提高可维护性.在 ...

  2. Swift中文教程(六)--枚举和结构

    原文:Swift中文教程(六)--枚举和结构 Enumerations 枚举 使用 enum 来创建一个枚举.跟Classes(类)和其他类型的命名方式一样,枚举也可以有Method(方法). enu ...

  3. 如何在MyBatis中优雅的使用枚举

    问题 在编码过程中,经常会遇到用某个数值来表示某种状态.类型或者阶段的情况,比如有这样一个枚举:   public enum ComputerState { OPEN(10), //开启 CLOSE( ...

  4. Swift学习笔记 - 位移枚举的按位或运算

    在OC里面我们经常遇到一些枚举值可以多选的,需要用或运算来把这些枚举值链接起来,这样的我们称为位移枚举,但是在swift里面却不能这么做,下面来讲解一下如何在swift里面使用 OC的位移枚举的区分 ...

  5. Swift具体解释之六----------------枚举、结构体、类

    枚举.结构体.类 注:本文为作者自己总结.过于基础的就不再赘述 ,都是亲自測试的结果.如有错误或者遗漏的地方.欢迎指正,一起学习. 1.枚举 枚举是用来定义一组通用类型的一组相关值 ,关键字enum ...

  6. 【Swift学习】Swift编程之旅---枚举(十二)

    枚举为一组相关的值定义一个共同的类型,并允许您在代码中的以类型安全的方式中使用这些值,在 Swift 中,枚举类型是一等(first-class)类型.它们采用了很多传统上只被类所支持的特征,例如计算 ...

  7. iOS开发零基础--Swift基础篇--常量&变量的定义

    什么是常量和变量 在Swift中规定:在定义一个标识符时必须明确说明该标识符是一个常量还是变量 使用let来定义常量,定义之后不可以修改 使用var来定义变量,定义之后可以修改 常量和变量的使用注意: ...

  8. Swift编程语言学习11—— 枚举全局变量、局部变量与类型属性

    全局变量和局部变量 计算属性和属性监视器所描写叙述的模式也能够用于全局变量和局部变量,全局变量是在函数.方法.闭包或不论什么类型之外定义的变量,局部变量是在函数.方法或闭包内部定义的变量. 前面章节提 ...

  9. The Swift Programming Language-官方教程精译Swift(9) 枚举-- --Enumerations

    枚举定义了一个通用类型的一组相关的值,使你可以在你的代码中以一个安全的方式来使用这些值.   如果你熟悉 C 语言,你就会知道,在 C 语言中枚举指定相关名称为一组整型值.Swift 中的枚举更加灵活 ...

随机推荐

  1. 第七届ACM趣味程序设计竞赛第四场(正式赛) 题解

    Final Pan's prime numbers 题目连接: http://acm.uestc.edu.cn/#/problem/show/1272 题意 给你n,要求你在[4,n]范围内找到一个最 ...

  2. MVC4数据注释与验证 2

    Using Validation Annotations Required必须项验证属性 [Required] public string FirstName { get; set; } [Requi ...

  3. innobackupex 备份实验

    [root@localhost ~]# xtrabackup -v xtrabackup version based Linux (x86_64) (revision id: 45cda89) [ro ...

  4. gradle的maven plugin使用

    在分布式系统开发中,基于gradle的项目,要共享jar一般是借助maven私服.那么gradle的maven插件如何做到上传binary jar,source jar, javadoc jar到私服 ...

  5. 转:关掉Archlinux中烦人的响铃

    http://www.0597seo.com/?p=461 F**K,在Archlinux中,每当在听音乐,声音开得挺大的,忽然在控制台输错了命令,那可恶的该死的警告声猛的一下总是吓的我精神晃晃(这是 ...

  6. Linux内核文档翻译之Squashfs文件系统

    转载:http://blog.csdn.net/gqb_driver/article/details/12946629 对于使用openwrt的嵌入式系统来说,因为硬件绝大多数采用Flash,因此一般 ...

  7. 收藏一部山地车教学视频,Fabien Barel主讲及动作示范

    视频是由曾多次获得UCI速降赛的冠军车手Fabien Barel主讲及动作示范,讲解山地车越野的装备以及基本动作.视频中的要点说明我已经手录为文本,如果视频中没有看清的地方,也可以看文字. 骑行装备 ...

  8. 小小的封装了一个pie的echarts

    function showData(ele,arr1,arr2){ var myChart2 = echarts.init(document.getElementById(ele)); var opt ...

  9. MySQL(26):事务的隔离级别出现问题之 幻读

    1. 幻读 幻读(Phantom Read)又称为虚读,是指在一个事务内两次查询中数据条数不一致,幻读和不重复读有些类型,同样是在两次查询过程中,不同的是,幻读是由于其他事务做了插入记录的操作,导致记 ...

  10. [翻译] CBStoreHouseTransition

    CBStoreHouseTransition What is it? A custom transition inspired by Storehouse iOS app, also support ...