Swift中枚举的总结以及使用
枚举定义了一组具有相关性的数据,是开发者可以再带吗中以一个安全的方式来使用这些值,以又助于提供代码的可读性。
在Swift中,枚举可以分成两种:任意类型的枚举和指定类型的枚举,结构如下:
//任意类型的枚举
enum EnumTest01{
}
//指定类型的枚举 在指定类型的枚举中不能是空的
enum EnumTest02:String{
}
任意枚举成员时要注意的问题:
1、在具有任意枚举类型中,可以将其中的成员定位为不同的类型
2、在任意的类型中,可以不定义成员,从而形成一个空的枚举类型
定义指定的枚举成员的注意的问题:
1、在指定数据类型的枚举类型中,如果原始类型是整型,可以不指定原始值。如果指定的类型非整型,需指定原始值。
2、在枚举类型指定数据类型后,其中的成员也都为此数据类型,不可以定义其他类型。
3、在为成员指定原始值时,原始值必须为唯一标识的。
4、在指定数据类型的枚举类型,必须使用case关键字定义成员。如果没有定义成员的话将会报错。
指定类型的枚举的定义成员:
enum Enum_names:String{
case name_01 = "name_01"
case name_02 = "name_02"
case name_03 = "name_03"
case name_04 = "name_04"
}
enum Enum_age:Int{
case age1
case age2
case age3 = 20
case age4
}
在这里Enum_names:String中的成员都是必须赋值的,但是在Enum_age:Int有时候是没有必要进行赋值的,如上面的.age1的没有赋值起原始值为0,age2的原始值为1 如果赋值后如:age3的原始值为20 age4的原始值是21 ,总结就是在没有赋值的情况下第一个成员为0,以后递增1如果进行了赋值,从赋值开始后面依次递增1。打印原值的方法如下:
print(Enum_age.age1.rawValue);
以此进行类推获取其他成员的原始值。
当然了也可以从原始值获取枚举的成员值,代码如下:
let ageEnum = Enum_age(rawValue: 20)
let nameEnum = Enum_names(rawValue: "name_01")
在任意类型的枚举类型中,可以定义任意的成员,这些成员是没有值的,在实例化时可以定义此成员的相关信息,这些信心称为相关值。定义如下面代码:
enum Barcode{
case UPCA(Int,Int,Int)
case QString(String,String,String)
}
将枚举成员和switch语句进行匹配时,switch语句必须要和每一个枚举成员进行匹配,不可以有遗漏,如果开发者不需要匹配每一个枚举成员,可以提供一个默认的default分之来涵盖所有没有明确匹配的成员。
如:
let name:Enum_names = .name_01
//使用default
switch name {
case .name_01:
//打印原值
print(name.rawValue);
break;
default:
print("没有找到")
}
//不使用default
let age:Enum_age = .age2
switch age {
case .age1:
print(age.rawValue)
case .age2:
print(age.rawValue)
case .age3:
print(age.rawValue)
case .age4:
print(age.rawValue)
}
//相关值的switch的匹配
let barcodeTemp = Barcode.QString("1", "2", "3")
switch barcodeTemp {
case .QString(let str,let str02,let str03):
print(str + str02 + str03)
default:
print("没有找到")
}
Swift中枚举的总结以及使用的更多相关文章
- Swift 中枚举
Swift 中枚举高级用法及实践 字数11017 阅读479 评论0 喜欢20 title: "Swift 中枚举高级用法及实践"date: 2015-11-20tags: [AP ...
- Swift面向对象基础(上)——Swift中的枚举
Swift中枚举 学习笔记来自<极客学院> import Foundation /**********1*Swift定义枚举的语法格式*************/ /* enum 枚举名 ...
- Swift Enum 枚举
前言 枚举是一种自定义的数据类型,在 Swift 中枚举类型拥有相当高的自由度.在 Swift 语言中枚举是一级类型,它拥有在其他语言中只有类才拥有的一些特性,比如实例方法,实例构造器等. 枚举声明的 ...
- swift中的结构体和枚举
Swift 里的结构体非常特殊. 类是面向对象编程语言中传统的结构单元.和结构体相比,Swift 的类支持实现继承,(受限的)反射,析构函数和多所有者. 既然类比结构体强大这么多,为什么还要使用结构体 ...
- Cocos2D在新版Swift中常量枚举值引用代码的修改
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们知道在SpriteBuilder中是无法直接给一个CCB文 ...
- [Swift]UIAlertController 以及 Swift 中的闭包和枚举
原文地址:http://blog.callmewhy.com/2014/10/08/uialertcontroller-swift-closures-enum/ 在 iOS8 的 SDK 中, UIK ...
- swift 的枚举、结构体、类
一.Swift的枚举 枚举是一系相关联的值定义的一个公共的组类型,同时能够让你在编程的时候在类型安全的情况下去使用这些值.Swift中的枚举比OC中的枚举强大得多, 因为Swift中的枚举是一等类型, ...
- [翻译]理解Swift中的Optional
原文出处:Understanding Optionals in Swift 苹果新的Swift编程语言带来了一些新的技巧,能使软件开发比以往更方便.更安全.然而,一个很有力的特性Optional,在你 ...
- 记OC迁移至swift中笔记20tips
写久了OC后来写swift,总感觉写着是swift的皮毛,但是实际上是OC的核心,这里整理了OC迁移至swift中的一些小细节. 1 在当前类中,实例方法调用属性以及方法都可以将self省略掉,而且是 ...
随机推荐
- php 与redis 结合 使用predis
分为2步骤 1.下载predis 2.使用predis,让php与redis进行通信 <?php require('autoload.php'); $redis = new Predis\Cli ...
- 构建Docker平台【第三篇】安装 kubernetes 组件
第一步:准备 1. 安装包: kubeadm-1.6.0-0.alpha.0.2074.a092d8e0f95f52.x86_64.rpm kubernetes-cni-0.3.0.1-0.07a8a ...
- 图形化代码阅读工具——Scitools Understand
Scitools出品的Understand 2.0.用了很多年了,比Source Insight强大很多.以前的名字叫Understand for C/C++,Understand for Java, ...
- Java 开机启动
1.授权: <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED">< ...
- 自学 iOS - 三十天三十个 Swift 项目 第一天
最近公司项目不是很忙,偶然间看到编程语言排行榜,看到swift 已经排到前10了,然OC排名也越来越后了,感觉要上车了,虽然现在项目都是用OC写的,但是swift是一种趋势.在网上看到"自学 ...
- vue简易轮播图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Python可视化学习(1):Matplotlib的配置
Matplotlib是一个优秀的可视化库,它提供了丰富的接口,让Python的可视化落地显得非常容易上手.本系列是本人学习python可视化的学习笔记,主要用于监督自己的学习进度,同时也希望和相关的博 ...
- 机器学习 - pycharm, pyspark, spark集成篇
AS WE ALL KNOW,学机器学习的一般都是从python+sklearn开始学,适用于数据量不大的场景(这里就别计较“不大”具体指标是啥了,哈哈) 数据量大了,就需要用到其他技术了,如:spa ...
- JavaScript如何一次性展示几万条数据
有一位同事跟大家说他在网上看到一道面试题:“如果后台传给前端几万条数据,前端怎么渲染到页面上?”,如何回答? 于是办公室沸腾了, 同事们讨论开了, 你一言我一语说出自己的方案. 有的说直接循环遍历生成 ...
- css2.1实现圆角边框
虽然css3的border-radius实现圆角很简单,但是我还是认为css2.1中好多技术还是很值得学习的,我也是后来才知道这就是传说中的滑动门技术.脑洞大开啊 附上demo <!DOCTYP ...