我有这个不能编译的代码。我的想法是想要保持一个全局常数类。
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
答案 0 :(得分:2)
您不能在课程中使用Type
名称,因为它是 Metatype Type 。
元类型类型是指任何类型的类型,包括类类型, 结构类型,枚举类型和协议类型。
类,结构或枚举类型的元类型是其名称 该类型后跟 .Type 。协议类型的元类型 - 不是 在运行时符合协议的具体类型是名称 该协议后跟.Protocol。例如,元的类型 类类型SomeClass是SomeClass.Type和元类型 协议SomeProtocol是SomeProtocol.Protocol。
重新命名。