HOME > GRDB
Swift 3.0になってSQLiteを触るために、以前まで利用していたSwiftData.swiftを 移管していたのですが、Swift3にはサポートされておらず 探していていきついたのがGRDB.swift。SQL構文を直接実行できるものを探していて、githubでもかなりアクティブに更新されていて頭一つぬいた存在に感じましたバージョンアップが早い。
SQLite.swiftやFMDBに比べても、GRDBは引けをとりません。Core DataやRealmを検討している人もGRDBは簡易的にマルチスレッドな アプリケーションを開発することができるので検討してもよいかもしれません。私自身はこの名前のGRDBがシンプルで気にいっています。
インストールや利用時に関してメモを記載してまいります。
まず私はCocoaPodにてインストールしました。このCocoaPodも使っていない人は慣れないパッケージ管理のソフトですので、 こちらの以前書いた記事(CocoaPodsとは何なのか? )を参考にして、まずはCocoaPodをインストールして下さい。
CocoaPod経由以外でもインストールは可能(Carthageや手動でのプルジェクトへの取り込み)なので、 GRDBのインストールページをご参照ください。※私はこの方法でしか成功できませんでした、、、。
ここで私はハマりました、、、、、以下CocoaPodsでハマった箇所を共有です
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'pocketbible' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
pod 'GRDB.swift'
# Pods for pocketbible
target 'pocketbibleTests' do
inherit! :search_paths
# Pods for testing
end
end
↑こちらが私のPodfile(CocoaPodsが利用する設定ファイル)の中身。黒字の部分をデフォルトの設定ファイルに追加して下さい。 その後CocoaPods経由でインストール。注意!既にCocoaPodsを利用している人は、CocoaPodsを最新にするためにpod updateするのを忘れずに!私は 気づかずに古いGRDBをインストールしてしまってハマってしまいました。GRDBのページにあるバージョンを確認してSwift3.0のバージョン(恐らく0.101.1以上)か をご確認ください。そして、xcodeprojではなくxcworkspaceを実行してXCodeを起動してください。
必ずimport GRDB して下さい!これをしないと中途半端にコンパイルが通る場合がありましたので、 必ず明記的にimort GRDBを最初に追記することが必要です。
↓準備。以下ではGlobalDataのdbQueueというグローバル変数に仮にセットして説明しています。
databasePathにはアクセスしたいsqliteのデータファイルのパスをセットして下さい
do{
GlobalData.dbQueue = try DatabaseQueue(path: databasePath);
}catch{
//ERROR
}
↓UPDATEの場合(レスポンス不要でSQLのみ実行の場合)
do{
try GlobalData.dbQueue.inDatabase { db in
try db.execute("UPDATE hogehoge_table SET hogehoge_field = 'test'")
}
}catch{
//ERROR
}
↓SELECTの場合(レスポンス必要な場合)
do{
try GlobalData.dbQueue.inDatabase { db in
let rows = try Row.fetchCursor(db, "SELECT * FROM hogehoge_table")
while let row = try rows.next() {
if row.value(named: "hogehoge_field1") != nil {
let hogehoge_int = row.value(named: "hogehoge_field1") as Int
let hogehoge_string = row.value(named: "hogehoge_field2") as String
...
}
}
}
}catch{
//ERROR
}
上記がGRDBを利用してsqlLiteのデータベースファイルにSQLを用いてアクセスしてデータをとる方法です。SQLが苦手な方は別の方法で取得も可能なようですのでGRDBのRecordページをご確認下さい。 私は直接SQLが書かれていた方が理解しやすかったので↑の方法を利用しています。
このGRDBから今後は移管しませんように、、、、
2021-05-14 14:21:41 | WatchOSのwatchconnectivityのFiletransferの落とし穴。と、避け方。
AppleWatch 実機だと成功するんだけど、シュミレーターだと失敗するという、、、
昔作成してた時は成功してたのになーと思って調べると、どうやら昔は成功してたみたい。watchOS6以降は... |
2021-05-06 14:04:37 | LINEのアニメーションスタンプ制作の落とし穴、、、失敗談
ゴールデンウィークにLINEスタンプを作成してみました。
作り切って申請も通したんですが、意図したアニメーションと違う、、、、
LINEクリエーターの画面だと、アニメーションのプレビュー... |
2021-05-01 18:05:35 | 久しぶりのAdmobをobjective-cに実装。コンパイルエラーだらけ。バーミッション不具合でエミュレータにインスコできない。
忘れないようにメモ
エミュレータにアプリをインストールする際にパーミッション系のエラーがでた時、また、iphone実機にインストールする際にも権限系のエラーが出る場合。
ターゲット→ex... |
Tweet | |||
|