見出し画像

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

今回の概略

NSArray 族でサブクラスを作っても全関数上書きするならナンチャッテ配列オブジェクトでもいいよね🤤
独自配列基底クラスは NSMutableArray のプロパティと、型が関係なく値を見るだけの count 、そして for in に対応する NSFastEnumeration プロトコルの実装を行い、今までの独自配列クラスはこれを継承する形にすげ替えたお🤔
他の関数は引数がオブジェクトだったりプリミティブだったりなので個別に作るのよ😑

#学習記 #Objective_C
#NSArray #サブクラス #NSFastEnumeration

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

----備忘録
(現在無し)


前回の粗筋

NSArray のサブクラスも NSDictionary みたいに「自分で全部実装してネ」だという事が発覚😩



独自配列

ここは TypeVal と同じ方式で対処するお😑
つまり、なんちゃって NSArray サブクラス🤪

どうせ全部上書きだし、共通になるクラスをまず作るっぽ😑
TypeVal や OptSw みたいに内部に NS(Mutable)Array を保持して共通になるプロパティを付ける🤔
addObject とかは格クラスで型チェックするので基底クラスでは省略よ🤤どうせ上書きだし

というか OCObjective-C はどうやら virtual とか abstract みたいのが無いみたいで実装忘れを防止させるのは一工夫要るみたい😞みんどいからやんない

基底クラスをすげ替えて…

super で呼んでいたのを単に self.value へ置き換えっと🤤
確か RecordElement と Record も独自配列作って似た事やってた筈だから確認するぽ🤔

これREArrayが NSMutableArray 基底なら Record の方も一緒かな🙄

ここで一度、実行してみようず🤤

NSArray 族ではなくなったので省略した関数は持ってない😑

indexOfObject は StrArray はそのままでも良いけど IntArray とかは引数がプリミティブになるので使う事になったら実装するのが良い😑(手抜き

同じく NSArray 族ではなくなったので for in で呼ばれる enumerator な関数が使えないので警告が出ているお😑
まぁ、 value で繋げばいけるのかな?🙄

NSFastEnumeration で for...in 構文に対応させる
https://ez-net.jp/article/C1/JbGgJFhN/vIeHLdJq9L8J/

プロトコルとか言うのに対応しないといけないみたい。有り難い資料だわ🤤
まぁ、直接 NSArray を継承できないせいでこんなめんどくさいプロトコルに対応とやらをしないとならないんだけど😞

ああああ OptSw の配列クラス直してなーい😭

やっと(本体の)デバグの入り口に立った気がする🙄今までのは前哨戦
この状態で各種コミットして今回は一区切りかな😑


次回は

-v とか知らないよって言ってる原因探るぽ🤤
これ基本文法の時にやったやつで Java と arguments の個数が違うから起きる現象だった筈だけどその確認からかな🤔

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