swift版的枚举变量
swift版的枚举变量

swift的枚举类型跟普通的类是极为类似的,使用的时候,请不要以为他是一个常量,以下是测试用源码
//
// ViewController.swift
// SwiftEnum
//
// Created by YouXianMing on 15/10/9.
// Copyright © 2015年 ZiPeiYi. All rights reserved.
// import UIKit enum Planet: Int { case Mercury = , Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
} enum CompassPoint: String { case North, South, East, West
} enum Barcode { case UPCA(Int, Int, Int, Int)
case QRCode(String)
} enum MinionIndex: Int { case DAVE, BOB, JERRY, JORGE, KEVIN, MARK, PHIL, STUART, TIM static let minionNames = [ DAVE : "Dave",
BOB : "Bob",
JERRY : "Jerry",
JORGE : "Jorge",
KEVIN : "Kevin",
MARK : "Mark",
PHIL : "Phil",
STUART : "Stuart",
TIM : "Tim"] func minionName() -> String { if let minionName = MinionIndex.minionNames[self] { return minionName } else { return "Minion"
}
} func minionImage() -> UIImage? { return UIImage(named: "Minion\(minionName())")
}
} class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() normalExample() planetExample() compassPointExample() barcodeExample() minionIndexExample()
} func normalExample() { let vegetable = "red pepper" switch vegetable { case "celery":
print("Add some raisins and make ants on a log.") case "cucumber", "watercress":
print("That would make a good tea sandwich.") case let x where x.hasSuffix("pepper"):
print("Is it a spicy \(x)?") default:
print("Everything tastes good in soup.")
}
} func planetExample() { if let planet : Planet = Planet(rawValue: ) { // switch 操作
switch planet { case .Mercury:
print("\(planet) \(planet.rawValue)") case .Earth:
print("\(planet) \(planet.rawValue)") case .Neptune:
print("\(planet) \(planet.rawValue)") default:
print("\(planet) \(planet.rawValue)")
} } else { // 没有这个枚举值
print("no value")
}
} func compassPointExample() { if let compassPoint : CompassPoint = CompassPoint(rawValue: "Kxo") { // switch 操作
switch compassPoint { case .North:
print("\(compassPoint) \(compassPoint.rawValue)") case .West:
print("\(compassPoint) \(compassPoint.rawValue)") default:
print("\(compassPoint) \(compassPoint.rawValue)")
} } else { // 没有这个枚举值
print("no value")
}
} func barcodeExample() { let barCode = Barcode.UPCA(, , , ) switch barCode { case .UPCA(, , , ):
print("YES") default:
print("NO")
}
} func minionIndexExample() { print(MinionIndex.DAVE.minionImage())
}
}
rawValue类型的枚举类型



可以带参数,可以带方法


非 rawValue 类型

swift版的枚举变量的更多相关文章
- Swift版iOS游戏框架Sprite Kit基础教程下册
Swift版iOS游戏框架Sprite Kit基础教程下册 试读下载地址:http://pan.baidu.com/s/1qWBdV0C 介绍:本教程是国内唯一的Swift版的Spritekit教程. ...
- Swift版音乐播放器(简化版),swift音乐播放器
这几天闲着也是闲着,学习一下Swift的,于是到开源社区Download了个OC版的音乐播放器,练练手,在这里发扬开源精神, 希望对大家有帮助! 这个DEMO里,使用到了 AudioPlayer(对音 ...
- 快速排序OC、Swift版源码
前言: 你要问我学学算法在工作当中有什么用,说实话,当达不到那个地步的时候,可能我们不能直接的感觉到它的用处!你就抱着这样一个心态,当一些APP中涉及到算法的时候我不想给其他人画界面!公司的项目也是暂 ...
- iOS可视化动态绘制八种排序过程(Swift版)
前面几篇博客都是关于排序的,在之前陆陆续续发布的博客中,我们先后介绍了冒泡排序.选择排序.插入排序.希尔排序.堆排序.归并排序以及快速排序.俗话说的好,做事儿要善始善终,本篇博客就算是对之前那几篇博客 ...
- swift版的CircleView
swift版的CircleView 效果图 源码 // // CircleView.swift // CircleView // // Created by YouXianMing on 15/10/ ...
- swift版的GCD封装
swift版的GCD封装 说明 本人针对swift封装了GCD,包括GCDQueue,GCDGroup,GCDTimer以及GCDSemaphore,使用较为便利. 源码 https://github ...
- swift版的StringAttribute
swift版的StringAttribute 效果 源码 https://github.com/YouXianMing/Swift-StringAttribute // // StringAttrib ...
- swift版的元组
swift版的元组 说明 元组的内容并不多,使用的话跟普通变量类似,以下是测试源码: // // ViewController.swift // Tuples // // Created by You ...
- 关东升的iOS实战系列图书 《iOS实战:入门与提高卷(Swift版)》已经上市
承蒙广大读者的厚爱我的 <iOS实战:入门与提高卷(Swift版)>京东上市了,欢迎广大读者提出宝贵意见.http://item.jd.com/11766718.html ...
随机推荐
- tomcat 日志详解
1 tomcat 日志详解 1.1 tomcat 日志配置文件 tomcat 对应日志的配置文件:tomcat目录下的/conf/logging.properties. tomcat 的日志等级有 ...
- docker 使用compose安装zookeeper集群
此基础镜像使用的为zookeeper的官方镜像 docker pull zookeeper 新建文件 docker-compose.yml version: ' services: zookeeper ...
- 深入理解Java虚拟机:第2章 Java内存区域与内存溢出异常
目录 2.2 运行时数据区域 Java堆 方法区 虚拟机栈 本地方法栈 程序计数器 2.3 HotSpot虚拟机对象探秘 对象的创建 对象的内存布局 对象的访问定位 2.2 运行时数据区域 Jav ...
- 面试:http协议
转自:http://www.cnblogs.com/ranyonsue/p/5984001.html#undefined HTTP简介 HTTP协议是Hyper Text Transfer Proto ...
- Automapper问题记录
在Automapper使用中会碰到一些未能映射或者错误的问题,这些问题可能会经常忘记如何处理,想到一些就记录一些: 映射值有时为空又不报错的情况 这很可能是由于目标类中的部分属性有问题导致的,最简单的 ...
- JavaScript函数——预编译
四部曲 创建AO对象 找形参和变量声明,将变量和形参名作为AO属性名,值为undefined. 将实参值和形参值统一 在函数体内找函数声明,值赋予函数体. 权重按顺序依次增加.以下例子即可体现上述规则 ...
- C# WebBrowser设置代理
WebBrowser控件是基于IE浏览器的,所以它的内核功能是依赖于IE. code: class IEProxy { //设置代理选项 private const int INTERNET_OPTI ...
- PHP 类与对象 全解析( 一)
目录 PHP 类与对象 全解析( 一) PHP 类与对象 全解析( 二) PHP 类与对象 全解析(三 ) 1.类与对象 对象:实际存在该类事物中每个实物的个体.$a =new User(); 实例化 ...
- [android] 手机卫士黑名单功能(列表展示)
先把要拦截的电话号码保存到数据库中,拦截模式用个字段区分,1 电话拦截,2 短信拦截,3全部拦截 新建Activity类CallSmsSafeActivity.java 新建布局文件activity_ ...
- python 中迭代和遍历的区别
什么是迭代? 迭代就是重复运行一段代码语句块的能力.分为两种方式 使用递归函数 使用循环(for 或 while 循环) 假设有个需求,要按照降序打印10以下(包括10),0 以上的整数,用递归和循环 ...