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 ...
随机推荐
- xgboost使用
xgboost的实现方式为多颗CART树,其实xgboost就是类似于随机森林,但是与随机森林不同,他不是多个子树决策的结果,CART树最后会算出一个得分,是一个值,最后算出分类的时候,是多个值结合在 ...
- H5如何用Canvas画布生成并保存带图片文字的新年快乐的海报
摘要:初略算了算大概有20天没有写博客了,原本是打算1月1号元旦那天写一个年终总结的,博客园里大佬们都在总结过去,迎接将来,看得我热血沸腾,想想自己也工作快2年了,去年都没有去总结一下,今年势必要总结 ...
- [Codeforces 993E]Nikita and Order Statistics
Description 题库链接 给你一个长度为 \(n\) 的序列 \(A\) ,和一个数 \(x\) ,对于每个 \(i= 0\sim n\) ,求有多少个非空子区间满足恰好有 \(i\) 个数 ...
- UIKit 框架之UISearchBar、UITableViewController
// // tableViewController.m // tableVC // // Created by City--Online on 15/6/1. // Copyright (c) 201 ...
- python单链表
#!/usr/bin/env python3 # -*- coding:utf-8 -*- class LNode: """ 结点类 """ ...
- composer windows安装
一.下载安装包安装 https://getcomposer.org/download/(由于墙的限制,可能下载可执行文件失败,即使成功,由于网络的原因,安装的时候也可能会失败,所以建议用第二种方法) ...
- 【转】C#中continue、break和return用法
continue和break的用法一样,直接写上这个单词,后面加一个分号就行 比如: continue; break; 我们先来谈continue 看代码 for (int i=0; i<10; ...
- Java新建线程的两种方式
Java新建线程有两种方式,一种是通过继承Thread类,一种是实现Runnable接口,下面是新建线程的两种方式. 我们假设有个竞赛,有一个选手A做俯卧撑,一个选手B做仰卧起坐.分别为两个线程: p ...
- SimpleScalar Course Project
https://blog.csdn.net/wahaha_nescafe/article/details/8500186 https://blog.csdn.net/wahaha_nescafe/ar ...
- Qt程序Release版出现 类似 QEventLoop: Cannot be used without QApplication 问题的终极解决方案
最近在做Qt程序开发,程序在Debug下跑是没有问题的,发布到Release版本后,出现各种问题: 报各种莫名其妙的错误,类似的错误有: QEventLoop:Cannot be used wit ...