欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

swift版的枚举变量

程序员文章站 2022-04-11 17:04:52
...

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类型的枚举类型

swift版的枚举变量

swift版的枚举变量

swift版的枚举变量

 

可以带参数,可以带方法

swift版的枚举变量

swift版的枚举变量

 

非 rawValue 类型

swift版的枚举变量