У меня есть протокол «DifferentThings» и два класса, которые соответствуют ему, «ThingType1» и «ThingType2». Я поместил некоторые объекты этих двух типов классов в массив, содержащий «DifferentThings». Теперь я хочу просто взять все объекты из этого массива, которые относятся к типу класса «ThingType2», например. Как я могу это сделать?В Swift как я могу отфильтровать массив объектов, соответствующих протоколу по их классу?
Вот что я до сих пор:
protocol VariousThings: class {
}
class ThingType1: VariousThings {
}
class ThingType2: VariousThings {
}
let array: [VariousThings] = [ThingType1(), ThingType2()]
func itemsMatchingType(type: VariousThings.Type) -> [VariousThings] {
return array.filter { variousThing in
return (variousThing.self === type)
}
}
let justThingTypes1: [VariousThings] = itemsMatchingType(ThingType1)
'.self' на самом деле не нужен. – vadian
Nice one also =) –
Хороший совет по карте и возврату T –