Скажем, у нас есть перечисление со связанными типами значений. В приведенном ниже примере два типа значений - это простой объект, который содержит изображение и 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?
}
}
Вы видите, у меня есть проблемы с возвратом type..I знает, что случаи перечислений всех .Image..and Я хочу простую карту. Но быстрый синтаксис мне не помогает.
Любые идеи?
Я бы вернул nil, так что у вас есть набор дополнительных значений, связанных с дополнительными параметрами, после чего вы можете отфильтровать его, чтобы избавиться от nil. – Greg