見出し画像

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

今回の概略

名前が違うだけで OC での SQLite3 操作はほぼそのまま移植できるっぽい🤤

#学習記 #Swift
#SQLite

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

----備忘録
public 装飾子 → open
列挙をカスタムエラーへ
parseCsv の空行問題
Swift の args は OC 同様 [引数+1] 個


前回の粗筋

OC と似た流れかと思ったらなんか少し手順が違うっぽい…🙄



DBControllerBase

OCObjective-C の時と同様、実装を進めながら要るプロパティを足す方式にするぽ🤤
大筋はどうやら OC と同じで SQLITE_OK みたいな定義値を参照してたりするんだけど間になんか Swift らしからぬ「ポインタ」みたいな語が出てきてたりするので OC への遺産への橋渡しがあまりうまく造り込めてないのかも?😑

OC 版 DBControllerBase

[swift]SQLite3
https://qiita.com/SolaRayLino/items/06704b4709c700f3c3fa

ここを見る限りだと open やって SQLITE_OK を見る…の部分はそんな変わってないっぽい🤔
ただ、記事だと v2 ってあるのよね🙄
OC の時もなんか v2 だけど無印がそれで特に付加は要らないみたいなんじゃなかったっけかと思うも調べるのめんどい🤪

Swift で SQLite データベースを作成して開く
https://softmoco.com/sqlite/swift-create-and-open-sqlite-database.php

これこれ。ポインタうんぬんかんぬんの記事😑
ちょっとちゃんと読んでみるぽ🙄

………

記事で "OpaquePointer?" となっているのはこちらの OC 版で `@property sqlite3* conn;` になってる部分に相当してるやつだと思う😑
こいつも結局 open して SQLITE_OK を見てるからやっぱり同じなのかな?🤔
こっちの記事の open は v2 の無い無印😑

iOS SwiftでSqliteを使う。シミュレータ上に作成されたSQLiteファイルをMacで確認する
https://www.typea.info/blog/index.php/2022/05/14/ios_sqlite_simulator/

2022年最終更新の記事だから新しめ?🤤
こちらも無印 open 🤔

【Swift】SQLiteを使用する方法ご紹介。〜 追加・更新・削除・取得 〜
https://tomoblog.net/programing/swift/sqlite-2/

この記事も無印🤤
無印 open で大丈夫…だと思う🙄
そうするとポインタの名前が OC と変わるくらいでおおよそ一緒なのかな?これは🤔

記事の話を総合すると OC での 'sqlite3' と 'sqlite3_stmt' は 'OpaquePointer' と 'Int' という事になるんだけど…合ってるのかしら?🙄

コード書いてから quickhelp で確認したら Int32 らしい😑
多分これは C での使用を想定したライブラリだからだと思う🙄

SQLite C Interface
Result Codes
https://www.sqlite.org/c3ref/c_abort.html

enum じゃないのも古臭さを感じる😑
C ではこれをポインタで参照してて何かしら値が入ってるという想定みたいだからオプショナルじゃなくてもイケるかな?🤤
というか仮設定の st が通常の Int32 で受けられてるから大丈夫だわ🤔
ただ、何か操作しなくても 0SQLITE_OK のままなので要注意ってとこ?😑

ポインタ云々で混乱したけど、 OC では 'sqlite3' って名前だったのが 'OpaquePointer' に変わってるだけでほぼほぼ同じってオチで安心した🤤


次回は

execute と update かな🤤
多分ほぼそのまま移植できるのでは、と思ってる🤪🚩

この記事が気に入ったらサポートをしてみませんか?