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 = 1, 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: 1) {

            // 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(20, 120, 10, 20)

        switch barCode {

        case .UPCA(20, 120, 10, 20):
            print("YES")

        default:
            print("NO")
        }
    }

    func minionIndexExample() {

        print(MinionIndex.DAVE.minionImage())
    }
}

rawValue类型的枚举类型

可以带参数,可以带方法

非 rawValue 类型

时间: 2024-10-13 10:35:40

swift版的枚举变量的相关文章

iOS开发swift版异步加载网络图片(带缓存和缺省图片)

iOS开发之swift版异步加载网络图片 与SDWebImage异步加载网络图片的功能相似,只是代码比较简单,功能没有SD的完善与强大,支持缺省添加图片,支持本地缓存. 异步加载图片的核心代码如下:  func setZYHWebImage(url:NSString?, defaultImage:NSString?, isCache:Bool){         var ZYHImage:UIImage?         if url == nil {             return   

iOS开发——完整项目实战Swift篇&百思不得姐Swift版总结(二)

百思不得姐Swift版总结(二) tabBar和NavBar配色方案 一.常规主题色使用点 应用在发布前都会对其主题色进行设置,以统一应用的风格(可能有多套主题).在主题色设置上有几个方面,如下: 1.TabBar部分,设置图片高亮.文本高度颜色 2.NavigationBar部分,设置导航栏颜色及字体颜色 3.应用标签等,设置字体的颜色 4.应用图片主题色 主题色的设置点,大体从上面四个方面着手,图片的主题色我们可通过图片更换的方式进行处理.而通过代码来处理的1-3条,有着不同的处理方法.大家

代码重构(二):类重构规则(Swift版)

在上篇博客<代码重构(一):函数重构规则(Swift版)>中,详细的介绍了函数的重构规则,其中主要包括:Extract Method, Inline Method, Inline Temp, Replace Temp with Query, Introduce Explaining Variable, Split Temporary Variable, Remove Assignments to Parameters, Replace Method with Method Object等.关于

IOS 实现3D Touch在tableView的简单应用(swift版)

之前记录过OC版实现3D Touch功能的小小演示,最近无事整整swift,也弄个swift版的3D Touoch... 上代码. 一.3D Touch重按主屏icon出现快捷标签有两种添加方式: 1.静态添加,在工程中的info.plist文件中添加,这种方式添加的标签安装后就能显示 2.动态添加,通过代码动态添加快速入口.这种方式添加的标签,必须先运行一次App才会出现. func application(application: UIApplication, didFinishLaunch

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

?? 承蒙广大读者的厚爱我的 <iOS实战:入门与提高卷(Swift版)>京东上市了,欢迎广大读者提出宝贵意见.http://item.jd.com/11766718.html 欢迎关注关东升新浪微博@tony_关东升. 关注智捷课堂微信公共平台,了解最新技术文章.图书.教程信息 更多精品iOS.Cocos.移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com智捷课堂论坛网站:http://51work6.com/forum.php 版权声明:本文为博主原

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

Swift版iOS游戏框架Sprite Kit基础教程下册 试读下载地址:http://pan.baidu.com/s/1qWBdV0C 介绍:本教程是国内唯一的Swift版的Spritekit教程.本教程基于Xcode 6.1+iOS 8.1开发环境,采用Swift语言,详细讲解Sprite Kit游戏开发的各种知识,帮助读者尽快iOS游戏开发的技能. 目录 第7章  音频和视频 1 7.1  背景音乐 1 7.1.1  添加背景音乐 1 7.1.2  控制背景音乐 5 7.1.3  设置音乐

iOS游戏框架Sprite Kit基础教程——Swift版上册

iOS游戏框架Sprite Kit基础教程--Swift版上册 试读下载地址:http://pan.baidu.com/s/1qWBdV0C  介绍:本教程是国内唯一的Swift版的Spritekit教程.本教程基于Xcode 6.1+iOS 8.1开发环境,采用Swift语言,详细讲解Sprite Kit游戏开发的各种知识,帮助读者尽快iOS游戏开发的技能. 目录 目  录 第1章  编写第一个Sprite Kit程序 1 1.1  Sprite Kit介绍 1 1.1.1  什么是Sprit

关东升的iOS实战系列图书 《iOS实战:传感器卷(Swift版)》已经上市

?? 承蒙广大读者的厚爱我的 <iOS实战:传感器卷(Swift版)>京东上市了,欢迎广大读者提出宝贵意见.http://item.jd.com/11760248.html 欢迎关注关东升新浪微博@tony_关东升. 关注智捷课堂微信公共平台,了解最新技术文章.图书.教程信息 更多精品iOS.Cocos.移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com智捷课堂论坛网站:http://51work6.com/forum.php 版权声明:本文为博主原创文

关东升的《iOS实战:图形图像、动画和多媒体卷(Swift版)》上市了

承蒙广大读者的厚爱我的<iOS实战:图形图像.动画和多媒体卷(Swift版)>京东上市了,欢迎广大读者提出宝贵意见..http://item.jd.com/11760249.html 欢迎关注关东升新浪微博@tony_关东升. 关注智捷课堂微信公共平台,了解最新技术文章.图书.教程信息 更多精品iOS.Cocos.移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com智捷课堂论坛网站:http://51work6.com/forum.php