【Console Application】ファイルとデータベース 269【学習記】
今回の概略
NSNotFound とか言う unsigned なのに -1 っぽい振る舞いをする定数を見つけてそれを使う事にする等🤤
#学習記 #Objective_C
#NSNotFound #NSUInteger
前回の粗筋
内包クラス作れなくて子に親の参照作ろうとすると前方参照が要るけどなんとか乗り切った🙄
DBAccessor
まず原本でも DBKey より前に宣言されてる DBKey から呼ばれる機能の移植から🤤
そして OC やってていっつも思うの🙄
_人人人人人_
> 関数名 <
> 長すぎ <
 ̄Y^Y^Y^Y^ ̄
ただ単に replace にすれば良いのに stringByReplacingOccurrencesOfString だよ?🙄
他のオブジェクトの関数も長くなりがちだけど流石にこれはなんか文字列関数の名前に恨みでも有るんだろうかと思わざるを得ない😞
まぁ、時代を考えたら意識高い系が考えたキラキラな関数名だなって感じしかしないけど🙄
リフレクションで難儀を極める予定の rClass はまだしも getColumnNames は DBKey の宣言より後にあるじゃん!ってなった😞
Kotlin でもやったネタなので Swift でもネタで出るのは確定してるんだけど OC の場合はヘッダだけ先に書いておけば回避可能🤤
まぁ、判ってるエラーなので後回し😑
しかし indexOfObject の返値判定で気が付いたけどよくある index 返値系では負数を返してエラーとする事が多いのに OC は無符号整数のまま NSNotFound という定数を提供しているのよね🤔
エラーとして -1 を得る様に作ってるけど NSNotFound を利用する形に変えれば NSUInteger のままできるので幸せになれるのでは?🤤
よしよし🤤
どこかの区切りで勘定系や索引系はこれに置き換えてこうかな🤔
NSUInteger でありながら `printf("%d",var);` などとすると -1 となるものの中身は unsigned なので NSIntegerMax だった、というお話🤤
つまり NSNotFound を使うように変更する場合、まず NSNotFound である事を確認する形にしなければならないという事🤔
まぁ、忘れなければ大丈夫だろうけどウチはどうもすぐこういうの忘れるからのぅ…😞
頑なに原本に忠実でもダメでは無いんだけど「その言語らしさ」での実装を学ぶのも目的なので今回は NSNotFound は採用するお🤤
そうじゃなかったら OC のめんどいメッセージ方式なんて書かないで全部 C++ で書くわ🙄
と言う事はこの DBKey で使ってる、割と最近追加した IntArray の無符号版が要るわけよね🤤
まぁ、コピペして片っ端から符号なしにするだけなんだけど🤪
で、別のコンストラクタ呼ぶヤツ、 `[[DBKey alloc] init: key:]` にすべきか作法判らないんだけどとりあえず self で呼ぶ形にしてみてる🙄
エラー出ないからこっちの方が良さそうな感じするけど…ちゃんと動くのかねぃこれ🤔
次回は
DBKey の機能を移植してくぽ🤤