Swift枚举需要Int类型

时间:2016-05-17 10:07:05

标签: arrays swift enums

为什么需要以下枚举" KW"被声明为类型" Int"。否则,此代码片段不会编译。

enum  KW: Int8 {case XXXX=0,NNNR,NRNN,NNNB,NBNN,NRNB,NBNR,NNRB,RBNN,NNNN} //Edge values

struct KSet {
    var normal: [KW]
}

var checkit = [Int8](count:10, repeatedValue: 0)

    func initOne( index: Int8, k: [KW]) {
        checkit[ k[0].rawValue] += 1
        checkit[ k[1].rawValue] += 1
        checkit[ k[2].rawValue] += 1
        checkit[ k[3].rawValue] += 1
    }

initOne(    0, k: [.XXXX, .XXXX, .XXXX, .XXXX]) // one card 4 edges

1 个答案:

答案 0 :(得分:1)

问题是您无法使用Int8索引数组。您需要使用Int。您可以将Int8转换为Int,如下所示:

func initOne( index: Int8, k: [KW]) {
    checkit[ Int(k[0].rawValue)] += 1
    checkit[ Int(k[1].rawValue)] += 1
    checkit[ Int(k[2].rawValue)] += 1
    checkit[ Int(k[3].rawValue)] += 1
}

或者只是让enum使用Int