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. Codeforces Educational Codeforces Round 5 A. Comparing Two Long Integers 高精度比大小,模拟

    A. Comparing Two Long Integers 题目连接: http://www.codeforces.com/contest/616/problem/A Description You ...

  2. Codeforces Round #313 (Div. 1) B. Equivalent Strings DFS暴力

    B. Equivalent Strings Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/559 ...

  3. eclipse内存溢出报错:java.lang.OutOfMemoryError:Java heap space

    今天执行了一个比較大的程序,处理的数据达到126MB数据,将数据导入数据库中,用eclipse 来訪问时候,总是出现java.lang.OutOfMemoryError:Java heap space ...

  4. android百度地图开发之自动定位所在位置与固定位置进行驾车,步行,公交路线搜索

    最近跟着百度地图API学地图开发,先是学了路径搜索,对于已知坐标的两点进行驾车.公交.步行三种路径的搜索(公交路径运行没效果,待学习中),后来又 学了定位功能,能够获取到自己所在位置的经纬度,但当将两 ...

  5. .net 调用C++类库

    事实上这一直是个非常无解的问题.最好的办法是将C++类库写成COM. 可是有时候往往不能这个做.那就仅仅有两种办法:转成C函数形式或者Manage C++封装. 下文就介绍了这两种方法. 原帖:htt ...

  6. Java RESTful Web Service相关概念

    原文地址:http://1.liangtao.sinaapp.com/?p=647 接上一篇文章REST|RESTful初步认识:p=639">http://1.liangtao.si ...

  7. LINUX O_Direact

    http://laokaddk.blog.51cto.com/368606/699563

  8. javascript 的位操作符转换推断

    var a = "10" | 0; alert(a); alert (typeof a); 结果为10,number. 这就是说这条语句可以将字符串转化为number. 如果: v ...

  9. Golang学习 - unsafe 包

    ------------------------------------------------------------ 指针类型: *类型:普通指针,用于传递对象地址,不能进行指针运算. unsaf ...

  10. 小白日记45:kali渗透测试之Web渗透-SqlMap自动注入(三)-sqlmap参数详解-Optimization,Injection,Detection,Techniques,Fingerprint

    sqlmap自动注入 Optimization [优化性能参数,可提高效率] -o:指定前三个参数(--predict-output.--keep-alive.--null-connection) - ...