這裏是我的枚舉:是否可以在Swift中從Array <String>生成枚舉?
enum myEnum : Int {
case apple = 0
case orange
case lemon
}
我想從一個數組創建它。 數組元素可以是枚舉的名稱。
let myEnumDictionary : Array<String> = ["apple","orange","lemon"]
那麼有可能從數組中創建枚舉嗎?
這裏是我的枚舉:是否可以在Swift中從Array <String>生成枚舉?
enum myEnum : Int {
case apple = 0
case orange
case lemon
}
我想從一個數組創建它。 數組元素可以是枚舉的名稱。
let myEnumDictionary : Array<String> = ["apple","orange","lemon"]
那麼有可能從數組中創建枚舉嗎?
不,這是不可能的。以同樣的方式,你不能從數組創建類。
枚舉必須進行編譯。你不能動態創建它們。
如果枚舉rawValue
必須是int,你既可以地圖從整原始值的陣列,以枚舉的集合,或添加方便初始化返回枚舉給定的字符串匹配字符串:
enum MyEnum : Int {
case apple = 0
case orange
case lemon
init?(fruit: String) {
switch fruit {
case "apple":
self = .apple
case "orange":
self = .orange
case "lemon":
self = .lemon
default:
return nil
}
}
}
let myEnumDictionary = [0, 1, 2].map{ MyEnum(rawValue: $0) }.flatMap{ $0 }
let myEnumDictionary2 = ["apple", "orange", "lemon"].map{ MyEnum(fruit: $0) }.flatMap{ $0 }
如果枚舉rawValue
類型爲字符串,你不會需要提供一個初始化:
enum MyEnum: String {
case apple
case orange
case lemon
}
let myEnumDictionary = ["apple", "orange", "lemon"].map{ MyEnum(rawValue: $0) }.flatMap{ $0 }
當然,最簡單的方法來創建枚舉的數組只是提供枚舉的文字列表:
let myEnumDictionary: [MyEnum] = [.apple, .orange, .lemon]