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版的枚举变量的更多相关文章

  1. Swift版iOS游戏框架Sprite Kit基础教程下册

    Swift版iOS游戏框架Sprite Kit基础教程下册 试读下载地址:http://pan.baidu.com/s/1qWBdV0C 介绍:本教程是国内唯一的Swift版的Spritekit教程. ...

  2. Swift版音乐播放器(简化版),swift音乐播放器

    这几天闲着也是闲着,学习一下Swift的,于是到开源社区Download了个OC版的音乐播放器,练练手,在这里发扬开源精神, 希望对大家有帮助! 这个DEMO里,使用到了 AudioPlayer(对音 ...

  3. 快速排序OC、Swift版源码

    前言: 你要问我学学算法在工作当中有什么用,说实话,当达不到那个地步的时候,可能我们不能直接的感觉到它的用处!你就抱着这样一个心态,当一些APP中涉及到算法的时候我不想给其他人画界面!公司的项目也是暂 ...

  4. iOS可视化动态绘制八种排序过程(Swift版)

    前面几篇博客都是关于排序的,在之前陆陆续续发布的博客中,我们先后介绍了冒泡排序.选择排序.插入排序.希尔排序.堆排序.归并排序以及快速排序.俗话说的好,做事儿要善始善终,本篇博客就算是对之前那几篇博客 ...

  5. swift版的CircleView

    swift版的CircleView 效果图 源码 // // CircleView.swift // CircleView // // Created by YouXianMing on 15/10/ ...

  6. swift版的GCD封装

    swift版的GCD封装 说明 本人针对swift封装了GCD,包括GCDQueue,GCDGroup,GCDTimer以及GCDSemaphore,使用较为便利. 源码 https://github ...

  7. swift版的StringAttribute

    swift版的StringAttribute 效果 源码 https://github.com/YouXianMing/Swift-StringAttribute // // StringAttrib ...

  8. swift版的元组

    swift版的元组 说明 元组的内容并不多,使用的话跟普通变量类似,以下是测试源码: // // ViewController.swift // Tuples // // Created by You ...

  9. 关东升的iOS实战系列图书 《iOS实战:入门与提高卷(Swift版)》已经上市

             承蒙广大读者的厚爱我的 <iOS实战:入门与提高卷(Swift版)>京东上市了,欢迎广大读者提出宝贵意见.http://item.jd.com/11766718.html ...

随机推荐

  1. 深度剖析Dubbo源码

    -----------------学习dubbo源码,能给你带来什么好处?----------- 1.提升SOA的微服务架构设计能力   通过读dubbo源码是一条非常不错的通往SOA架构设计之路,毕 ...

  2. ArrayList的subList方法

    参考博文使用java.util.List.subList时最好小心点 List接口中定义: List<E> subList(int fromIndex, int toIndex); 英文注 ...

  3. [经典]网关,DNS,DHCP三者关系详解

    什么叫网关的精解 Sample Text转自(协议分析论坛)计算机主机网关的作用是什么?假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大爷就是你的 ...

  4. 纯Java JDBC连接数据库,且用JDBC实现增删改查的功能

    Java JDBC连接数据库 package cn.cqvie.yjq; import java.sql.*; /** * 注册数据库的驱动程序,并得到数据库的连接对象 * @author yu * ...

  5. Hive是什么

    Hive是什么1)Hive 是建立在Hadoop (HDFS/MR)上的用于管理和查询结果化/非结构化的数据仓库:2)一种可以存储.查询和分析存储在Hadoop 中的大规模数据的机制:3)Hive 定 ...

  6. C/C++ 类型内存占用详解

    最近做一些面试题目碰到了很多次考察C/C++类型内存占用的题目,主要考察队C/C++的指针.类型等的熟悉程度. 本blog为了方面大家参考,总结了常见的类型内存占用的情况,能力所限,若有问题,请指出! ...

  7. centos6.5下yum安装mysql5.5

    第一步就是看linu是否安装了mysql,经过rpm -qa|grep mysql查看到centos下安装了mysql5.1,那就开始卸载咯 2 接下来就是卸载mysql5.1了,命令:rpm -e ...

  8. mybatis之@Select、@Insert、@Delete、@Param

    之前学习的时候,看到别人在使用mybatis时,用到@Select.@Insert.@Delete.@Param这几个注解,故楼主研究了一下,在这里与大家分享 当使用这几个注解的时候,可以省去写Map ...

  9. Java虚拟机 - 符号引用和直接引用理解

    java -- JVM的符号引用和直接引用 https://www.zhihu.com/question/50258991 在JVM中类加载过程中,在解析阶段,Java虚拟机会把类的二级制数据中的符号 ...

  10. Code Signal_练习题_All Longest Strings

    Given an array of strings, return another array containing all of its longest strings. Example For i ...