見出し画像

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

【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 # ヘルプ

----備忘録
独自配列クラスのブラケットアクセス (forKeyedSubscript) 実装✅


概略

独自配列ブラケットアクセスは

- (id)objectAtIndexedSubscript:(NSUInteger)idx;
- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)idx;

を実装すれば良い。
配列ではなく辞書なら

- (id)objectForKeyedSubscript:(id)key;
- (void)setObject:(id) forKeyedSubscript:(id)key;

ただ、 mutable ではない方の継承クラスでは getter だけで良いのかどうかは不明😑

#学習記 #Objective_C
#NSMutableArray #NSMutableDictionary
#ブラケットアクセス


前回の粗筋

DB 関連は Java と随分違うので調べながらは とても時間がかかる…
なんとかそれっぽい状態の宣言を打ち立てるも…


独自配列クラスのブラケットアクセス

ブラケットアクセスとは、角括弧による配列の索引の指定方法よ🤤
Java なら `vararr.get(i)` で OCObjective-C なら `[vararr objectAtIndex:i]` なんだけどこれを `vararr[i]` という原始配列方式で使えるようにする仕組みの事なんだけど…🤔
C++ では演算子オーバーロードと呼ばれる方法で挙動を上書きできるんだけど OC ってそもそも C++ ではなく C が基底になってるから演算子オーバーロードでは書き換えができないのよね😞

で、前回 プリミティブ変数やリテラルを id で受ける方法を調べていたら偶然 OC での独自配列クラスのブラケットアクセスを上書きする方法が出てきたからやっておこうってなって忘れちゃうから備忘録に入れたんだけどこれ後回しにすると後々面倒になるから処理しとこうって話😑
元になるクラスから定義してるので移植を進めてると段々上層のクラスになって行くから必然的にブラケットアクセスを使いたく成る頻度が上がる筈だからねぃ🤤

Objective-Cで独自クラスに[]でアクセスする
https://www.tokoro.me/posts/objc-subscripting/

この記事が、その偶然見つかった記事🤤
そう、こういうの記録しておかないと「どう調べたら出てきたんだっけ?🙄」ってなるからね!🤪
そういう目的でこの学習記を書いてるので読み物のていを成してないのよね😞

記事が間違ってなければこれでブラケットアクセスしても id じゃなく期待した型で返ってくる筈…😑

………

あれ? addObject で積む処理してる所は有るけど参照してるとこが見当たらない🙄
多分 NSArray にキャストされてて使用箇所で念の為にメッセージ方式にして有るんだったと思う😞
まぁじゃぁ RecordElement の配列の方で同じ事するぽ🙄

でもまぁコピペして

返値の型を変更したら完了なんだけど🤤
問題はこれをブラケットアクセスに変えても文句言われなくなるか否か🙄

_人人人人_
> 勝利 <
 ̄Y^Y^Y^ ̄

露骨に文字数減って草🤪
そうよ、こうでなくちゃ🤤

今の段階ではまだ使われてない NSMutableArray<Record> も準備🤤
後は StrArray 使ってて念の為に objectAtIndex になってる箇所をブラケットアクセスにすれば一区切りかな🤔
問題はそれをどこで使ってたか、なのよね😑

有った有ったこういうの🤤

………
ここしか無かった模様🙄

とりあえずコミットしとこ🤤


次回は

これで憂いなく DB 接続の移植に戻れる🤤

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