Swift 枚举

Swift的枚举在功能上比OC强了很多,在Swift中枚举更倾向于类了

常规用法


enum NormalType: String {

    case aaa = "ccc"

    case bbb

    case 中文

}

let type = NormalType.aaa

print(type.rawValue)

成员变量,方法及协议

enum有了方法在很多时候显得很方便,例如我们定义通知方法时:


enum NotificationName: String {

    case notify1

    case notify2



    var name: Notification.Name {

        return Notification.Name.init(self.rawValue)

    }



    func postNotify(_ userInfo: [String: Any]?) {

        NotificationCenter.default.post(name: self.name, object: nil, userInfo: userInfo)

    }

}

NotificationName.notify1.postNotify(nil)

内部枚举

有时候我们定义一类枚举时,可以将多个枚举归为一类,形成内部枚举

例如:猫狗都是宠物,猫又有很多种,狗又有很多种,这时候就可以使用内部枚举了


enum Pet {

    enum Dog: String {

        case 哈士奇

        case 土狗

        case 牧羊犬

    }



    enum Cat: String {

        case 蓝猫

        case 橘猫

        case 短毛猫

    }

}

let sampleDog = Pet.Dog.土狗

print(sampleDog.rawValue)

相关值

相关值是swift语法enum的一大亮点,有时候我们定义枚举时,枚举里部分为string,部分为int,部分为image,部分为.......这个时候,枚举的相关性可以完美解决这个问题。


enum TestType {

    case text(String)

    case image(UIImage)

    case number(Int)

}

//赋值及取值的用法

let test = TestType.text("hello world")

if case let TestType.text(str) = test {

    if str == "hello world" {

        print(str)

    }

}

switch test {

case .text(let str):

    print(str)

case .image(let img):

    print(img)

case .number(let num):

    print(num)

}

你可能感兴趣的:(Swift 枚举)