Mam protokół "VariousThings" i dwie klasy, które są zgodne z nim, "ThingType1" i "ThingType2". Umieściłem kilka obiektów tych dwóch typów klas w tablicy zawierającej "Różne rzeczy". Teraz chcę po prostu wziąć wszystkie obiekty z tej tablicy, które są typu klasy "ThingType2" na przykład. Jak mogę to zrobić?W Swift, jak mogę filtrować tablicę obiektów zgodnych z protokołem według ich klasy?
Oto co mam do tej pory:
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' w rzeczywistości nie jest potrzebny. – vadian
Nice one również =) –
Dobra rada w sprawie płaskiego mapowania i powrotu T –