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

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

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

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

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

2回答

2747閲覧

csvデータの読み込みができない

afuroda

総合スコア36

Swift

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

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2017/01/13 17:43

###前提・実現したいこと
project内に入れているcsvデータを読み込んで表示させたいのですが、うまくいきません。
csvファイルは\nで区切って配列に格納して、その後に各配列の要素を,で区切って配列に格納したいのですがうまくいきません。

###該当のソースコード

swift

1 do{ 2 //CSVファイルのパスを取得する。 3 let csvPath = NSBundle.mainBundle().pathForResource("mondai", ofType: "csv") 4 5 //CSVファイルのデータを取得する。 6 let csvData = try String(contentsOfFile:csvPath!, encoding:NSUTF8StringEncoding) 7 8 //改行区切りでデータを分割して配列に格納する。 9 dataList = csvData.componentsSeparatedByString("\n") 10 for var i = 0; i < 6; i += 1 { 11 12 //カンマ区切りの1行を["aaa", "bbb", ... , "zzz"]形式に変換して代入する 13 let parts = dataList[i].componentsSeparatedByString(",") 14 problemArray.addObject(parts) 15 16 } 17 var mondai : NSArray = problemArray[counter] as! NSArray 18 19 20 21 22 }catch _ as NSError{ 23 print("error") 24 }

csv

1apple,ぶどう,レモン,りんご,みかん,3 2dog,ねこ,いぬ,うさぎ,たぬき,2 3cat,ねこ,いぬ,うさぎ,たぬき,1 4rabbit,ねこ,いぬ,うさぎ,たぬき,3 5lemon,ぶどう,レモン,りんご,みかん,2 6orange,ぶどう,レモン,りんご,みかん,4 7grape,ぶどう,レモン,りんご,みかん,1

###試したこと
printでmondaiの中身を出力すると
apple,
"\U3076\U3069\U3046",
"\U30ec\U30e2\U30f3",
"\U308a\U3093\U3054",
"\U307f\U304b\U3093",
3
となっていました
###補足情報(言語/FW/ツール等のバージョンなど)
swift2を使っています。

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

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

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

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

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

guest

回答2

0

ベストアンサー

problemArrayはNSMutableArrayでしょうかね?

その1

NSArrayではなくArrayにキャストする、

swift

1var mondai = problemArray[counter] as! Array<String> 2print(mondai) 3//=> ["apple", "ぶどう", "レモン", "りんご", "みかん", "3"]

その2

最初からArrayを使う。(NSMutableArrayを使わない)

swift

1// 初期化 2var problemArray: [[String]] = [] //「Stringの配列」の配列 3 : 4//追加 5//problemArray.addObject(parts) //NSArray 6problemArray.append(parts) //Array 7 : 8var mondai = problemArray[counter] //キャスト不要 9print(mondai) 10//=> ["apple", "ぶどう", "レモン", "りんご", "みかん", "3"]

投稿2017/01/16 02:49

fuzzball

総合スコア16731

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

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

0

ちゃんと取得できていますよ、以下のコードでラベルに「いぬ」と表示されます。
文字列がエンコードされて表示されているだけですね。

swift

1var mondai : NSArray = problemArray[1] as! NSArray 2label.text = mondai[2] as? String

以下の様にすると表示の形式は違いますが期待している様に表示されます。

swift

1dump(mondai) 2 3/* 4▿ 6 elements 5 - [0]: dog 6 - [1]: ねこ 7 - [2]: いぬ 8 - [3]: うさぎ 9 - [4]: たぬき 10 - [5]: 2 11*/

投稿2017/01/13 23:27

_Kentarou

総合スコア8490

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問