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 = 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-11-02 22:32:27

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

swift版的GCD封装

swift版的GCD封装   说明 本人针对swift封装了GCD,包括GCDQueue,GCDGroup,GCDTimer以及GCDSemaphore,使用较为便利.   源码 https://github.com/YouXianMing/Swift-GCD // // GCDQueue.swift // GCD // // http://home.cnblogs.com/u/YouXianMing/ // https://github.com/YouXianMing // // Create

Swift版音乐播放器(简化版)

这几天闲着也是闲着,学习一下Swift的,于是到开源社区Download了个OC版的音乐播放器,练练手,在这里发扬开源精神, 希望对大家有帮助! 这个DEMO里,使用到了 AudioPlayer(对音频封装的库) FreeStreamer(老外写的音频高效处理库) LKDBHelper(将数据模型直接写到数据库中的库) AFNetworking (网络库) SDWebImage (图片获取库) 另外,我也把OC版的ProgressHUD转成了Swift版本的HYBProgressHUD,希望对大

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

iOS开发之swift版异步加载网络图片     与SDWebImage异步加载网络图片的功能相似,只是代码比较简单,功能没有SD的完善与强大,支持缺省添加图片,支持本地缓存.      异步加载图片的核心代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 5

swift版的CircleView

swift版的CircleView   效果图 源码 // // CircleView.swift // CircleView // // Created by YouXianMing on 15/10/7. // Copyright 2015年 YouXianMing. All rights reserved. // import UIKit class CircleView: UIView { // MARK: - 变量 var lineWidth : CGFloat = 1 var lin

swift版的StringAttribute

swift版的StringAttribute   效果   源码 https://github.com/YouXianMing/Swift-StringAttribute // // StringAttributeProtocol.swift // Swift-StringAttribute // // Created by YouXianMing on 15/10/8. // Copyright 2015年 YouXianMing. All rights reserved. // import

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

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

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

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

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

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

融云在移动端获取token(swift)版

融云在移动端不提供注册, 说是不安全等等原因, 需要在服务器端注册, 然后返回给客户端,但是我们又没有服务器, 因此我们可以用手机模拟服务器发送请求, 这样我们就可以自己注册和登录, 做一个聊天的小应用了. 按照官方文档一步一步来就可以了 本来是在网上找的代码, 麻蛋, 总是401错误,401错误是请求成功了但是参数有问题, 很多代码都写得有问题, 定义的变量不用,该有的变量没写,算了,不吐槽了.上代码 func getToken() { // 申请时必要的参数 let parameters =