SwiftでEnumを使用する際の注意点

 2021年06月25日

SwiftでEnumを使用する際の注意点

Enum は、Swiftで最も愛されている強力なAPIの1つです。 事実、Swiftでは、Enumは慎重に開発されているため、ユーザーはさまざまなタイプで使用できます。

しかし、我々は最も可能性の高い読み、コードを困難にするような愚かなだけでなく自分自身を行いますので、我々は Enum を使用するときに避ける必要があることを例いくつかの種類が残っています。

 

1. ケース環境の一覧表示


  • さまざまなカテゴリのポッドキャストアプリを使用する場合の具体例と、ポッドキャスト全体に使用する場合と1つのポッドキャストに使用しない場合の2つの特殊なケースを取り上げます。

 

 

  • 次に、ポッドキャストアプリの使用中にユーザーが選択した文字列値を比較するフィルターを実装します。

 

 

一見すると、上記の実装は問題ないように見えます。 しかし、少し考えてみると、 Swift自体に、variableの valueがそうである場合とそうでない場合を解決する機能があります。それが optrongl です。

したがって、structPodcastのcategoryに optionalを使用して、Swiftが optional値の処理をすでにサポートしているすべての機能を利用します。

 

 

  • ここで swift を使用することは、メカニズムをまったく変更する機能なしで上記のオプションのカテゴリを適用できるため、興味深いことです。

具体的には、ここでは case none を使用して、不足しているケースをリストします。

 

 

 

2.それぞれの場合に特定の名前を使用すること


実際、ポッドキャストはすべてのカテゴリに属する​​ことはできないため、すべてのケースは同じフィルターを使用した場合にのみ機能します。

  • そのため、そのケースをナビゲーションカテゴリに含める代わりに、フィルタドメインに固有の専用カテゴリを作成しましょう。

そのため、そのケースをナビゲーションカテゴリに含める代わりに、フィルタドメインに固有の専用カテゴリを作成しましょう。そうすれば、関心の分離をかなりきれいに行うことができます。ネストされた型を使用しているため、同じカテゴリ名を使用するように新しいアドレスを設定できます。今回のみ、次のようにフィルターモデルにネストされます。

  • カテゴリ Enum のケースを使用する代わりに、フィルター専用に使用する別のEnum を作成します。

このようにして、次のようにネストされたタイプを使い始めるときに、カテゴリを明確に分離できます。

 

 

  • switch-caseのwhereを使用することで、より具体的で簡潔な方法でフィルターロジックを実装し、理解しやすくしました。

 

 

  • これで、Podcast.Categoryリストからすべてのケースを削除してtGcを続行し、各カテゴリのより単純なリストを作成できます。

 

 

 

3. カスタムタイプのケース


  • Enum やPodcast Categoryには、ケースを追加する際の将来の拡張について留意する必要があります。これを行うために、特定のタイプのカスタムケースを作成することを検討できます。

そのようにケースには、カスタムカテゴリを表す string としてrawValueがあるような、関連付けられた値が必要です。

 

 

  • 関連付けられた値が役立つ場合もありますが、この場合はそれほど強力ではありません。

将来、特別なカスタムタイプを使用すると、rawValueに一致するpy値をデコードまたはエンコードするメソッドが必要になる可能性があるためです。

したがって、Enum CategoをawRepresentableに変換するような別のアプローチを検討する必要があります。rawValueの文字列値を操作するときに、Swiftの組み込み機能を使用してエンコード/デコードを実行します。

 

 

  • 将来の機能に対応したいカスタム srtingからCategoryを自由にインスタンス化できるようになりました。ただし、新しい機能に下位互換性を持たせるには、新しいタイプに静的を使用する必要があります。

 

  • switchメソッドを使用すると、Categoryの各ケースの string を返すtitieという名前の関数があります。しかし、上記の変更で、我々は適切なタイトルの値を返すために適切な調整を行う必要があります。これらの string値をローカライズ可能な string に移動し、必要な処理を実行してから、タイトルの最終的なstring 値を返します。

 

4. 静的プロパティの自動命名:関数


これは基本的に、上記のコードベースのアプローチの1つの欠点として追加する必要がある定義です。これは、静的プロパティごとにrawValuesを手動で定義する必要があることです。しかし、これは、次のように#functionキーワードを使用して関数(またはプロパティ)の名前を自動的に置き換えることで簡単に解決できるものです。

 

 

上記の拡張機能を使用すると、autoNamed()を呼び出すだけで、各カテゴリAPIが組み込まれ、SwiftがそれらのrawValueを自動的に入力します。

 

 

5. まとめ

Enum は非常に柔軟性があり、コードを理解しやすくし、後でコードを保守するのも簡単にします。この記事の後、Swiftで enum について他の言語と比較して多くの注意事項を学び、アプリ開発だけでなく迅速な列挙型の効率を最適化しました。

 

オフショア開発をご検討されている方々はぜひ一度ご相談ください。

※弊社の連絡先は以下の通り

アカウントマネージャー: クアン(日本語・英語対応可)

電話番号: (+84)2462 900 388

メール:  [email protected]

お電話でのご相談/お申し込み等、お気軽にご連絡くださいませ。