Возможно, этот код вам поможет (с детской площадки):
class ModelFoo {}
class NewModel {}
let models: [Any] = [ModelFoo(), NewModel()]
let result = models.map { $0 as? NewModel ?? NewModel() }
Вы просто проверяете тип каждого элемента в массиве models
и пытаетесь привести этот элемент к типу NewModel
. Если вы не можете привести этот элемент к типу NewModel
, вы получите nil, который позже будет заменен новым экземпляром NewModel
. Итак, в результате вы получите массив с элементами типа NewModel
.
OR
Использовать этот код как массив результатов:
let result: [Any] = models.map {
guard $0 is ModelFoo else { return $0 }
return NewModel()
}
Разница в том, что вторая реализация поддерживает случай, когда массив models
состоит не только из экземпляров ModelFoo
и NewModel
, и вы хотите заменить только экземпляров ModelFoo и оставить другие.