如何使用enum,swift learning,enum简化并使其更好

时间:2016-06-20 22:15:06

标签: ios swift enums swift2 xcode7

我按照

定义了一些范围
let range0_15   =   0 ..< 15
let range15_30  =   15 ..< 30
let range30_45  =   30 ..< 45
let range45_60  =   45 ..< 60

我真的想通过尝试

来使用Enum
enum range : Range<Int> {
    range0_15   =   0 ..< 15
    range15_30  =   15 ..< 30
    range30_45  =   30 ..< 45
    range45_60  =   45 ..< 60
}

我收到了错误

Type 'CoreDataStach.range' does not comform to protocol RawRepresentable

是否可以定义上面的枚举,如果是,那么我在这里缺少的是什么。

2 个答案:

答案 0 :(得分:3)

试试这样:

enum rangeEnum : Int {
    case range0_15
    case range15_30
    case range30_45
    case range45_60

    var range:Range<Int> {
        switch self {
        case range0_15 : return 0 ..< 15
        case range15_30 : return 15 ..< 30
        case range30_45 : return 30 ..< 45
        case range45_60 : return 45 ..< 60
        }
    }
}

然后你可以使用rangeEnumVariable.range

或者

rangeEnum.range0_15.range

答案 1 :(得分:3)

使用结构体尝试这样的事情可能会更好。

struct Ranges{
    static let range0_15   =   0 ..< 15
    static let range15_30  =   15 ..< 30
    static let range30_45  =   30 ..< 45
    static let range45_60  =   45 ..< 60
}

if Ranges.range0_15.contains(6){ //Test to true
    print("inside range")//Prints "inside range"
}