【发布时间】:2016-06-09 15:05:02
【问题描述】:
假设我们有一个带有关联值类型的枚举。在下面的示例中,两种值类型是简单的对象,其中包含要共享的图像和 url。
enum Content {
case Image(ShareableImage)
case Video(ShareableVideo)
}
现在让我们有一组视频和图像案例。
let media: [Content] = [*a lot of enum cases inside here*]
到目前为止,上面的所有代码都不能在代码库中以任何方式更改,我需要使用它。
我的问题从这里开始:
让我们用媒体过滤数组以仅显示图像
let imageOnlyCases: [Content] = media.filter { item -> Bool in
switch item {
case .Image: return true
default: return false
}
}
下一步,我想从枚举数组中获取它们关联值的数组
[Content] -> [ShareableImage] by using map.
所以我这样做
let shareablemages = imageOnlyCases.map { imageCase -> ShareableImage in
switch imageCase {
case .Image(let image): return image
default: return WHAT TO DO HERE?
}
}
你看,我的返回类型有问题..我知道枚举案例都是 .Image..我想要一个简单的地图。但是快速的语法对我没有帮助。
有什么想法吗?
【问题讨论】:
-
我会返回 nil,所以你有一个可选的关联值数组,之后你可以过滤它以摆脱 nil。