見出し画像

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

今回の概略

addRecord してるのに nil のままの DBA.record ………😞

#学習記 #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 内の値設定処理がおかしい


前回の粗筋

どこかで読み込んだ csv を record にできていないっぽい🤔



デバグ

入っているべき record が nil なのでどこかで失敗しているか移植を忘れているかだけどそれを探るぽ😑
前回見ていた限りでは csv の読込み自体はできていたのでそこは心配無いけど parse が成功しているかどうかというのはまた別問題😞

まずは問題が見つかった mergeDBWithLineAll
Java 原本

原本を見る限りでも「空なら例外、有るなら1行毎に」となっているので移植漏れでは無いぬ😑

Csv.init ; loadCsv ; DBAccessor.initWithConsole ; addRecords ; mergeWithLineAll ;
並びだけ見ると合ってる感じするお🤔
addRecords がおかしいのかな?くらいかな、この時点では😑

new Csv ; loadCsv ; new DBAccessor ; addRecords ; mergeDBWithLineAll ;
原本でもほぼほぼ同じ流れになってるお😑

という事は下手人は loadCsv か addRecords という事に🤔
まず loadCsv からかな。これがアウッだったら結果的に addRecords も死ぬわけなので怪しさから言えば loadCsv なのよね🙄

ファイル終端の空行を取り込んでるとおぼしき4つめ[3]のデータが不穏ではあるけど parseCsv 自体はおかしくなくて配列に取り込めてる😑
addRecords および addRecord ではこういう不完全な個数は無視する造りだった筈だけど中断しちゃう処理になってるのかしら?🤔

addRecords まで進ませたけど、これ原本云々以前に addRecord の返値確認しないで stack.addObject してるの、危ないよね?🙄
で、↑の addRecords 原本見ると返値 void になってるんだけど…😑
まぁ後で直すとして、全く効果が出てない単品追加処理の addRecord へ進むお🙄

この処理の obj も無検査で突っ込んでる…😞

更に進めると、設定してる値がおかしくなってる😞
でもまだ record としてはブツが入ってるので進めてみるぽ

stack 見ると中身の是非は置いといて、個数はちゃんと有るぽ😑

でも self.record を見ると nil のまま…🙄
この辺りを追いかけたら良いのかな😑
状況からすると下手人は addRecord っぽい🤔


次回は

更なる下手人への追求を行うお🤤

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