在Constant类中访问枚举时编译swift中的错误

时间:2015-10-10 07:58:26

标签: swift enums

我有这个不能编译的代码。我的想法是想要保持一个全局常数类。

ViewController.swift:

var user = [String: String]()    
user[CUser.Attribute.TYPE] = userTypeSwitch.on ? CUser.Type.RIDER.rawValue : CUser.Type.RIDER.rawValue

CUser.swift

class CUser {
  enum Type: String {
    case RIDER
    case DRIVER
  }
  class Attribute {
    static let TYPE = "TYPE"
  }
}

错误信息是:“输入'CUser.Type'没有成员'RIDER'”

但是当我用另一个虚拟类封装枚举类型Type时,它编译得很好。这样:

user[CUser.Attribute.TYPE] = userTypeSwitch.on ? CUser.Dummy.Type.RIDER.rawValue : CUser.Dummy.Type.RIDER.rawValue

1 个答案:

答案 0 :(得分:2)

您不能在课程中使用Type名称,因为它是 Metatype Type

  

元类型类型是指任何类型的类型,包括类类型,   结构类型,枚举类型和协议类型。

     

类,结构或枚举类型的元类型是其名称   该类型后跟 .Type 。协议类型的元类型 - 不是   在运行时符合协议的具体类型是名称   该协议后跟.Protocol。例如,元的类型   类类型SomeClass是SomeClass.Type和元类型   协议SomeProtocol是SomeProtocol.Protocol。

重新命名。