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

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

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

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

Q&A

0回答

386閲覧

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

KTH

総合スコア86

Swift

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

0グッド

0クリップ

投稿2020/07/05 05:27

編集2020/07/05 05:29

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

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

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

swift

1 func CSVUSE(){ 2 do { 3 //CSVファイルのパスを取得する。 4 let csvPath = Bundle.main.path(forResource: "AAA", ofType: "csv") 5 //CSVファイルのデータを取得する。 6 let csvData = try String(contentsOfFile:csvPath!, encoding:String.Encoding.utf8) 7 //改行区切りでデータを分割して配列に格納する。 8 dataList = csvData.components(separatedBy: "\n") 9 dataList.removeSubrange(0...18) 10 print("AAAAAAA") 11 print(dataList.count) 12 let aa = dataList[1].split(separator: ",") 13 print(aa) 14 15 16 print(dataList[0]) 17 print("EEEEEEE") 18 print(dataList[1]) 19 print("RRRRRRRR") 20 print(dataList[2]) 21 print("TTTTTt") 22 print(dataList[3]) 23 if let ff = dataList.firstIndex(of: "アマランサス") { 24 let rr = dataList[ff].components(separatedBy: ",") 25 print(rr) 26 27 if let searchTextA = dataList.firstIndex(of: "アマランサス") { 28 29 print("PPPPPPPPPPPPP") 30 label.text = String(dataList[searchTextA]) 31 } 32 33 } 34 35 36 37 } catch { 38 print(error) 39 } 40

ちなみに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,-,-,-,-,-,-,-,-,-,-

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

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

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

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

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

hoshi-takanori

2020/07/05 06:03

dataList には csv の各行がそのまま入ってるので、”アマランサス” にはマッチしないでしょうね。
KTH

2020/07/05 06:39

どういう形で書き換えればfirstIndexで使える形になりますか?
KTH

2020/07/05 06:40

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

2020/07/05 06:44

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

2020/07/05 07:07

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問