質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

6446閲覧

SwiftのEnumで文字列で指定して値を取得したい

退会済みユーザー

退会済みユーザー

総合スコア0

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2018/06/12 09:33

編集2018/06/12 10:43

やりたいこととしては

  • 人気な言語ランキングが返ってくるAPIを使って言語名を文字列で取得
  • 言語ごとに色を定義してあるので、それを使いたい。

以下のようなenumがあるとします。

swift

1enum languageColor: String { 2 case javascript = "f1e05a" 3 ... 4}

たとえばjsonをparseして

swift

1let language: String = "javascript"

があるとします。
この場合、どのようにして、enumから取得できるでしょうか?

また、この場合は、enumではなくて配列の方が適しているのでしょうか?

配列だと

Swift

1let hoge = { 2 javascript: "f1e05a" 3 .... 4}

と簡単にできるのですが、、、データのまとまりをenum使ってかきたいです。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2018/06/13 05:39 編集

なぜenumなのでしょうか?(「enumで書いてみたいから」という理由でもかまいません)使い方からするとDictionaryの方が良さそうですが。
guest

回答1

0

ベストアンサー

配列だと

これ、辞書です。

enumを使うのであれば以下のようにするのはいかがでしょうか?

swift

1 2/// Enum定義 3enum LanguageColor: String { 4 case javascript 5 case swift 6 7 var color: String { 8 switch self { 9 case .javascript: return "f1e05a" 10 case .swift: return "f9332e" 11 } 12 } 13} 14

swift

1 2// 使うところ 3 4let language1: String = "javascript" 5 6if let color = LanguageColor(rawValue: language1)?.color { 7 print(color) 8 //=> f1e05a 9} 10 11let language2: String = "swift" 12 13if let color = LanguageColor(rawValue: language2)?.color { 14 print(color) 15 //=> f9332e 16} 17

投稿2018/06/12 11:36

_Kentarou

総合スコア8490

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyabi_takatsuk

2018/06/13 04:53

横槍すみません。 こんな便利な方法があったとは。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問