[Swift]標準APIの戻り値型[AnyObject]をどうにかしたい

標準APIにも関わらず、戻り値の型が[AnyObject]であるものがいくつか残っている。

Swiftが安全性のひとつとして型推論を標榜しているだけに、戻り値型を不用意に特定してくれないのは困りものだ。

以前は、NSLayoutConstraintの制約生成系APIが軒並み[AnyObject]型を返しており、不便に感じた記憶があるが、Xcode7.2 で確認したところ[NSLayoutConstraint]型を明示するようになっていた。
バージョンアップとともに、徐々にSwiftも改良されているようである。

しかし一部のフレームワークではまだアラが残っている。Accountsフレームワークの以下メソッドがそのひとつ。

accountsWith とメソッド名が明示しているのだから、戻り値は[ACAccount]であって然るべきなのだが。

このような場合、以下のようにas!演算子で強制的に型変換かけても問題ないかもしれない。

しかし、一応要素ごとの型チェックはしておきたい。Arrayfilterを用いれば、1行で簡潔に実装することができる。

この.filter({ $0 is Type }) as! [Type]をさらに簡潔、直感的に記述できるようArrayextensionを実装してみたいのだが、いい方法が思いついていない。

コメントを残す