使用雨燕

问题描述:

枚举和阵列我已经宣布枚举使用雨燕

enum MenuItem { 
    case Item(String, Bool) 
} 

我有这样的数组枚举

let menuList = [ 
    MenuItem.Item("Title_1", true), 
    MenuItem.Item("Title_2", false), 
    MenuItem.Item("Title_3", true), 

] 

现在,从上面的阵列如何获取字符串数组?

["Title_1", "Title_2", "Title_3"] 
+0

我不确定枚举是不是最好的选择,我认为有两个变量的结构会更好。 – EmilioPelaez

如果你只是想从你的阵列筛选出Item案件,并得到了弦从它们的相关值的数组,你可以使用flatMappattern matching实现这一目标。例如:

// your array of enums 
let menuList = [ 
    MenuItem.Item("Title_1", true), 
    MenuItem.Item("Title_2", false), 
    MenuItem.Item("Title_3", true), 
] 

let arrayOfStrings:[String] = menuList.flatMap { 

    // if the element is of case .Item, return its string from the associated value 
    if case .Item(let str, _) = $0 {return str} 

    // else return nil (flatMap will filter out nil from the resultant array) 
    return nil 
} 

print(arrayOfStrings) // ["Title_1", "Title_2", "Title_3"] 

虽然我不得不质疑你在这里使用枚举。如果它只有一个case,那么struct会更合适(我不确定是否为了这个问题简化了它)。