我正在使用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 {}
)
我的两个枚举是否符合一种自定义类型?
答案 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"))