枚举结构创建

时间:2016-09-21 17:12:56

标签: swift enums protocols swift3

我正在使用Swift 3进行模型定义。 我有两个简单的枚举:

enum CompanyField: String {
    case id
    case name
}

enum UserField: String {
    case email
    case id
    case id_company
}

使用集合时,我希望符合泛型类型。像Field之类的东西,例如:

let fields: [Field : String] = [UserField.id : "1", CompanyField.name : "A name"] 

let fields: [Field] = [UserField.id, CompanyField.name]

我试图创建一个Field协议,但没有成功。 (例如:enum UserField: Field {}

我的两个枚举是否符合一种自定义类型?

1 个答案:

答案 0 :(得分:0)

这可以为您提供一种灵活的方式来表达您的枚举符合自定义域协议,并仍然可以用作字典和数组元素。 但同样,这可以避免将不同的枚举类型混合为dict键

func map<K,V>(forFields fields: (K,V)...) -> [K:V] where K : Hashable{
    var dict = [K:V]()
    fields.forEach { (key, value) in
       dict[key as K] = value
    }
    return dict
}
map(forFields: (UserField.email, "email"), (UserField.id,"id"))