美文网首页
iOS Swift 自定义enum 类型

iOS Swift 自定义enum 类型

作者: Charles_Zhang | 来源:发表于2018-08-10 14:09 被阅读0次

    在开发中我们经常会使用enum来枚举不同的状态。

    举个例子,在测试登录服务器的时候,可能会有多中权限的账号存在,比如管理员、普通用户、开发者等,我们可以用一个enum来表示他们

    enum Enum_Account{
        case Adminstrator
        case User
        case Developer
    }
    

    假如我需要对每一种状态,返回固定的中文显示的String,最常规的方法可能就类似下面

    func getAccountAuth(accont:Enum_Account)-> String{
        switch status{
            case: .Adminstrator
                return "管理员"
            case: .User
                return "普通用户"
            case: .Developer
                return "开发者"
        }
    }
    

    当然除此之外还有更好的办法,Swift原生就支持对enum指定一个类型

    enum Enum_Account : String {
        case Adminstrator = "管理员"
        case User = "普通用户"
        case Developer = "开发者"
    }
    

    那我们使用的时候,就直接可以通过 Enum_Account.rawValue取到上面的String值
    但是这种方法有一个局限性,就是只能对enum指定一个类型,而且对enum指定的类型只能是字面量类,例如,如果把enum 的类型设置为UIColor:

    enum Enum_Color:UIColor {
    
    }
    

    此时会提示错误:
    Raw Raw type 'UIColor' is not expressible by any literal

    这个时候我们可以使用extension解决这个问题,我们可能常常会为一个class做extension, 其实enum也可以做extension!

    enum Enum_Common_Color {
    
        case Login_background
    
        case Negative_Text
    
        case Positive_Text
    
    }
    
    
    extension  Enum_Common_Color{
    
        var color:UIColor{
    
        switch self {
    
            case .Login_background:
    
                return UIColor(red: 57/255.0, green: 60/255.0, blue: 69/255.0, alpha: 1.0)
    
            case .Negative_Text:
    
                return UIColor(red: 0x19/255.0, green: 0x7F/255.0, blue: 0xBF/255.0, alpha: 1.0)
    
            case .Positive_Text:
    
                return UIColor(red: 0xF7/255.0, green: 0x44/255.0, blue: 0x44/255.0, alpha: 1.0)
    
    /*default:
    
    return UIColor.blue*/
    
            }
    
        }
    
    }
    

    那我们要获取状态对应颜色的时候,只需要通过Enum_Common_Color.Login_background.color这样的方式就可以获取颜色啦!

    相关文章

      网友评论

          本文标题:iOS Swift 自定义enum 类型

          本文链接:https://www.haomeiwen.com/subject/mpikbftx.html