假设我们有一个带有相关值类型的枚举.在下面的示例中,两个值类型是包含图像的简单对象和要共享的URL.
enum Content {
case Image(ShareableImage)
case Video(ShareableVideo)
}
Run Code Online (Sandbox Code Playgroud)
现在让我们来看一系列视频和图像案例.
let media: [Content] = [*a lot of enum cases inside here*]
Run Code Online (Sandbox Code Playgroud)
到目前为止,上面的所有代码都无法在代码库中以任何方式进行更改,我需要使用它.
这开始我的问题:
让我们用媒体过滤数组,只对图像情况进行过滤
let imageOnlyCases: [Content] = media.filter { item -> Bool in
switch item {
case .Image: return true
default: return false
}
}
Run Code Online (Sandbox Code Playgroud)
下一步,我想从枚举数组获取其关联值的数组
[Content] -> [ShareableImage] by using map.
Run Code Online (Sandbox Code Playgroud)
所以我这样做
let shareablemages = imageOnlyCases.map { imageCase -> ShareableImage in
switch imageCase {
case .Image(let image): return image
default: return WHAT TO DO HERE?
}
}
Run Code Online (Sandbox Code Playgroud)
你看,我有一个返回类型的问题..我知道枚举案例都是.Image …