iOS Swift 自定义enum 类型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kmonarch/article/details/82892309

在开发中我们经常会使用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这样的方式就可以获取颜色啦!

猜你喜欢

转载自blog.csdn.net/kmonarch/article/details/82892309