見出し画像

【Console Application】ファイルとデータベース 307【学習記】

今回の概略

原本と違う参照になっていて「確かにこれじゃレコードの型が入るわ」ってなってた🙄
原本でも csv の途中に空行が有ると初期値のみのレコードが紛れる問題が発覚😞
csv → Record が治ったらそのまま -d も通ってしまう等🤤

#学習記 #Objective_C

【Console Application】ファイルとデータベース【学習記】
仕様
https://note.com/sayka/n/nb8a67fa90a64?magazine_key=m7bb64c6a359f#br1mB

仕様
レコード
・レベル
 1-12
・難易度
 b,n,h,a,l
・曲名
・ランプ
 -,x,a,e,c,h,e,f

オプションスイッチ
-u file.csv # 更新(略値)
 ファイル名だけ指定した場合更新処理と見做す
-d file.csv # 削除
-p # csv 出力(略値)
 何も指定せずに起動した場合出力処理と見做す
-v # バージョン
-h # ヘルプ

----備忘録
Record.setValueWithArrayString 内の値設定処理がおかしい✅
parseCsv の空行問題


前回の粗筋

addRecord は治ったけど csv の不具合の事忘れてた🙄



デバグ

csv から record にする時おかしいの直そうね🤤
前回のコンソール出力見るとわかるんだけど Java 系とは異なる障害があってそれもやらないとね🤔


空行

それじゃまずは空行を排除するお🤤
正確には Java 系にも似た様な処理が有った筈だけど OCObjective-C はファイルの読み込み方が違うので起きてるってトコかな😑
読み込んだ文字列が "" とかを排除すれば良いけど追わないとどこに処理入れて良いのかなんとも🙄

loadCsv では一発270行で全部読み込んでしまって parseCsvTextDocuments で resultNSArray に合う形にしているぬ🤔
確かこの parseCsvTextDocuments は Java には無くてこれを一旦行の情報にしてから Java にもある parseCsv へ通すんじゃなかったかな🤤
とりあえず空行排除判定入れるのは、ここではないお😑

作った本人だから覚えてたというのもあるけど想定通り行にバラしてからの処理かな🤤
ここは既に改行\nは排除された1行毎の配列になっているので "" だけ見て弾けば良さそう🤔

一応この先の挙動も見とこうかな😑

特にこれと言った対策も要らないかなここparseCsvは🤔
ただ、引数dataに null を渡すと return も null になるから呼んでる側である程度処理が要るっぽい😑
csv の構造的に "" には成るけど null にはなりえないから原本Javaでは無視してるんだと思う🙄
そういう意味では原本側でも「途中に空行」が混ざってると OC と同じ「初期値のみの Record 」が生まれてしまうという不具合が今判明😞
この問題はこの学習中lampManagerには対応しないで進めるお🙄
ホントは細かい事言ったら改行の種類対応だとか csv 区切り文字への対応とか要るんだけど今の学習の間に「そこまで重要ではない」ので手を付けない🤪

………🤔
isEqualToString:@"" と length どっちが速いかな…🤤

data[3] が居なくなる

空行排除成功👈🤪


Record 化

さて、それじゃ csv じゃなく cell の型の文字列が入っちゃう問題について調べるぽ😑

どう見ても addRecords よりも下層でおかしいのよね😞
もっと潜らないといけない🙄

addRecord1行処理の方 に来たばかりは、まだ正常😑

まだ…まだ大丈夫…ここからセル毎に呼ばれる…😑

………ん?なんで value に getTypeVal の返値が…?🏮🤨

原本 setValueWithArrayStrings

原本でも `data[i]` になってんじゃん😭なんでよ
完全なる移植誤り😞

階層が深すぎるけどとりあえず csv の文字列が入るように🤤

ヨシ!👈🤪


-d

不具合出たら次回かなって思ったらそのまま通った件に関して🤤


次回は

いよいよ Swift で開始よー🤪

いいなと思ったら応援しよう!