タイトル通りで、UIViewController
やUIView
のArray
から特定のサブクラスだけ抜き出す処理はよく書くので、
ただのaliasですが、少しでも楽しようとextension
にしてみる。
extension Array { func `as`<E>(_ type: E.Type) -> [E] { return self.compactMap({ $0 as? E }) } }
使い方
// Before let pageViewController = children.compactMap({ $0 as? HogePageViewController }).first // After let pageViewController = children.as(HogePageViewController.self).first
だいぶスッキリ(?)
.first
のケースが多いので、そこまで含めてpick
とか適当なのをもう一つ作ってもいいかもしれない🤔