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

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

ただいまの
回答率

88.91%

SwiftのfirstIndexが機能しない理由を教えて欲しい

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 132

KTH

score 4

配列の中にアマランサスという単語があるのがわかっている状態で、配列の中からfirstIndexで探してそれの配列の中での番号をとりだそうとしているのですが、なぜかわからないのですがfirstIndexが機能してくれません

どこが悪いのかわかる方がいれば教えてください

if let文がスルーされてしまいます

    func CSVUSE(){
            do {
                //CSVファイルのパスを取得する。
                let csvPath = Bundle.main.path(forResource: "AAA", ofType: "csv")
                //CSVファイルのデータを取得する。
                let csvData = try String(contentsOfFile:csvPath!, encoding:String.Encoding.utf8)
                //改行区切りでデータを分割して配列に格納する。
                dataList = csvData.components(separatedBy: "\n")
                dataList.removeSubrange(0...18)
                print("AAAAAAA")
                print(dataList.count)
                    let aa = dataList[1].split(separator: ",")
                print(aa)


                print(dataList[0])
                print("EEEEEEE")
                print(dataList[1])
                print("RRRRRRRR")
                print(dataList[2])
                print("TTTTTt")
                print(dataList[3])
                if let ff = dataList.firstIndex(of: "アマランサス") {
                    let rr = dataList[ff].components(separatedBy: ",")
                    print(rr)

                    if let searchTextA = dataList.firstIndex(of: "アマランサス") {

                        print("PPPPPPPPPPPPP")
                        label.text = String(dataList[searchTextA])
                        }

                }



            } catch {
                print(error)
            }

ちなみにcsvのデータはこんな感じです

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
日本食品標準成分表2015年版(七訂),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
本表,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
01 穀類,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
食品群,食品番号,索引番号,食品名,廃 棄 率,,,一般成分,一般成分,一般成分,一般成分,一般成分,,,,,一般成分,一般成分,,,,一般成分,無機質,無機質,無機質,無機質,無機質,無機質,無機質,無機質,無機質,無機質,無機質,無機質,無機質,"ビタミン
(ビタミンA)","ビタミン
(ビタミンA)","ビタミン
(ビタミンA)","ビタミン
(ビタミンA)","ビタミン 
(ビタミンA)","ビタミン
(ビタミンA)",ビタミン,"ビタミン 
(ビタミンE)","ビタミン 
(ビタミンE)","ビタミン 
(ビタミンE)","ビタミン 
(ビタミンE)",ビタミン,ビタミン,ビタミン,ビタミン,ビタミン,ビタミン,ビタミン,ビタミン,ビタミン,ビタミン,,,,,,,,,,,
,,,,,エネルギー(kcal),エネルギー(kJ),水   分,たんぱく質,アミノ酸組成によるたんぱく質,脂   質,トリアシルグリセロール当量,飽和脂肪酸,一価不飽和脂肪酸,多価不飽和脂肪酸,コレステロール,炭水化物,利用可能炭水化物(単糖当量),水溶性食物繊維,不溶性食物繊維,食物繊維総量,灰   分,ナトリウム,カリウム,カルシウム,マグネシウム,リン,鉄,亜鉛,銅,マンガン,ヨウ素,セレン,クロム,モリブデン,レチノール,α-カロテン,β-カロテン,β-クリプトキサンチン,β-カロテン当量,レチノール活性当量,ビタミンD,α-トコフェロール,β-トコフェロール,γ-トコフェロール,δ-トコフェロール,ビタミンK,ビタミンB1,ビタミンB2,ナイアシン,ビタミンB6,ビタミンB12,葉酸,パントテン酸,ビオチン,ビタミンC,食塩相当量,アルコール,硝酸イオン,テオブロミン,カフェイン,タンニン,ポリフェノール,酢酸,調理油,有機酸,重量変化率
,,,Tagnames,REFUSE,"ENERC_
KCAL",ENERC,WATER,-,PROTCAA,-,FATNLEA,FASAT,FAMS,FAPU,CHOLE,-,CHOAVLM,FIBSOL,FIBINS, FIBTG,ASH,NA,K,CA,MG,P,FE,ZN,CU,MN,ID,SE,CR,MO,RETOL,CARTA ,CARTB ,CRYPXB,CARTBEQ,VITA_RAE,VITD,TOCPHA,TOCPHB ,TOCPHG,TOCPHD,VITK,THIAHCL ,RIBF,NIA,VITB6A,VITB12,FOL,PANTAC,BIOT,VITC,NACL_EQ,ALC,NITRA ,THEBRN,CAFFN ,TAN,POLYPHENT,ACEAC,-,OA,-
,,,単位,%,kcal/100 g,kJ/100 g,g/100 g,g/100 g,g/100 g,g/100 g,g/100 g,g/100 g,g/100 g,g/100 g,mg/100 g,g/100 g,g/100 g,g/100 g,g/100 g,g/100 g,g/100 g,mg/100 g,mg/100 g,mg/100 g,mg/100 g,mg/100 g,mg/100 g,mg/100 g,mg/100 g,mg/100 g,µg/100 g,µg/100 g,µg/100 g,µg/100 g,µg/100 g,µg/100 g,µg/100 g,µg/100 g,µg/100 g,µg/100 g,µg/100 g,mg/100 g,mg/100 g,mg/100 g,mg/100 g,µg/100 g,mg/100 g,mg/100 g,mg/100 g,mg/100 g,µg/100 g,µg/100 g,mg/100 g,µg/100 g,mg/100 g,g/100 g,g/100 g,g/100 g,g/100 g,g/100 g,g/100 g,g/100 g,g/100 g,g/100 g,g/100 g,%
01,01001,1,アマランサス 玄穀 ,0,358,1498,13.5,12.7,(12.5),6.0,5.0,1.18,1.48,2.10,(0),64.9,63.5,1.1,6.3,7.4,2.9,1,600,160,270,540,9.4,5.8,0.92,6.14,1,13,7,59,(0),0,2,0,2,Tr,(0),1.3,2.3,0.2,0.7,(0),0.04,0.14,1.0,0.58,(0),130,1.69,16.3,(0),0,-,-,-,-,-,-,-,-,-,-
01,01002,2,あわ 精白粒 ,0,367,1538,13.3,11.2,10.0,4.4,4.1,0.67,0.52,2.75,(0),69.7,69.6,0.4,2.9,3.3,1.4,1,300,14,110,280,4.8,2.5,0.49,0.88,0,2,1,22,(0),(0),(0),(0),(0),(0),(0),0.6,0,2.2,0,(0),0.56,0.07,2.9,0.18,(0),29,1.83,14.4,0,0,-,-,-,-,-,-,-,-,-,-
01,01003,3,あわ あわもち ,0,214,893,48.0,5.1,(4.5),1.3,(1.2),(0.22),(0.19),(0.73),0,45.3,-,0,1.5,1.5,0.3,0,62,5,12,39,0.7,1.1,0.20,0.46,0,1,0,40,0,0,0,0,0,0,0,0.1,0,1.2,0,0,0.08,0.01,0.3,0.03,0,7,0.61,3.4,0,0,-,-,-,-,-,-,-,-,-,-
01,01004,4,えんばく オートミール ,0,380,1590,10.0,13.7,12.0,5.7,(5.1),(0.94),(1.80),(2.09),(0),69.1,63.1,3.2,6.2,9.4,1.5,3,260,47,100,370,3.9,2.1,0.28,-,0,18,0,110,(0),-,-,-,(0),(0),(0),0.6,0.1,0,0,(0),0.20,0.08,1.1,0.11,(0),30,1.29,21.7,(0),0,-,-,-,-,-,-,-,-,-,-
01,01005,5,おおむぎ七分つき押麦 ,0,341,1427,14.0,10.9,(9.5),2.1,1.8,0.58,0.20,0.91,(0),72.1,(71.2),6.3,4.0,10.3,0.9,2,220,23,46,180,1.3,1.4,0.32,0.85,-,-,-,-,(0),-,-,-,(0),(0),(0),0.2,Tr,0.1,0,(0),0.22,0.07,3.2,0.14,(0),17,0.43,-,(0),0,-,-,-,-,-,-,-,-,-,-

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • KTH

    2020/07/05 15:40

    dataListの型がStringの配列なんですがそこからどうすれば正しい形にできるんですか?

    キャンセル

  • hoshi-takanori

    2020/07/05 15:44

    csv を改行で区切って、さらに各行を , で区切ると、String の配列の配列になりますよね。そこから直接「アマランサス」を探すには firstIndex(of:) は使えないので、firstIndex(where:) を使うか、名前だけを取り出して別の String の配列を作るか…。

    キャンセル

  • hoshi-takanori

    2020/07/05 16:07

    よく見たら , で区切っても「アマランサス 玄穀 」なので、「アマランサス」ではマッチしないですね。
    そして、どういう方法で扱うのがいいかは、検索した結果をどう利用したいかにもよります。

    キャンセル

まだ回答がついていません

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

  • ただいまの回答率 88.91%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る