なんとかするから、なんとかなる

エンジニア関係のことを書きます

Swift4.2 列挙型Enumで全ての要素を取得する

English version below

はじめに

オブジェクトの状態を定義など、いろいろと便利な列挙型Enumですが、この度Swift4.2で新しい機能が追加されていました。

この記事にはSwift 4.2からの新機能、列挙型Enumから全ての要素を取得する方法を紹介します。

今まででは

Swift4.1以前では列挙型Enumを取得するとき、次のようにやっていたと思います。

enum MyEnum {
    case one
    case two
    case three

    static let allValues = [MyEnum.one, MyEnum.two, MyEnum.three]
}

allValuesのような配列を宣言することで、全要素数を取得したりfor-in文で回したりすることができました。

Swift4.2からは

今回Swift4.2からはCaseIterableプロトコルが追加されました。

このプロコトルを使うと先ほどの列挙型は次のように定義できます。

enum MyEnum: CaseIterable {
    case one
    case two
    case three
 }

とてもシンプルになりました。

使い方は次の通りです。

// 要素数を取得する
MyEnum.allCases.count

// for-in で回す
for item in MyEnum.allCases {
    // Do something with item
}

終わりに

結構便利なプロコトルが今回追加されました。

ぜひ使っていきましょう。

参考URL

CaseIterable - Swift Standard Library | Apple Developer Documentation