• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

swift版的枚举变量

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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 类型

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[Swift-2019力扣杯春季初赛]2.校园自行车分配发布时间:2022-07-13
下一篇:
如何在iOS8中使用Swift实现本地通知(下)发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap