初期データを取り込みたいSQLiteデータベースがあります。 SQLite.swiftを使用してSQLite.swiftでデータベースを作成した後に初期データを挿入する
、この方法では動作しているようだ:
do {
let _ = try db.run(userDictionary.create(ifNotExists: false) {t in
t.column(wordId, primaryKey: true)
t.column(word, unique: true)
t.column(frequency, defaultValue: 1)
t.column(following, defaultValue: "")
})
} catch _ {
print("table already exists")
return
}
// Add some initial data for a new database
print("adding new data")
myMethodToInsertInitialData()
これが機能する方法、私はエラーに初期データベースの作成後に毎回スローするifNotExists: false
を使用していますということですが。 (true
に設定しても、エラーは発生しません(または早期復帰を許可します)。)私は実際にはエラーとしてそれを意味しません。私はちょうど新しく作成されたデータベースにいくつかのデータを挿入したい。これを行う良い方法はありますか?これは誰もがやっていることですか?
にあなたはそれがアプリケーションを実行している最初の時間であるかどうかをチェックするために 'NSUserDefaults'またはプロパティリスト' plist'にブールを設定することができません。 – TPlet
@TPlet、私はそれを考えて、それは有効なオプションです。私がそれから離れている理由は、データベーステーブルを削除し、最初の実行後にそれを再作成することができるからです。上記の方法では、データベーステーブルが作成されるとき(およびそのときのみ)に初期データを追加します。 – Suragch
まあまあです。私はSQLite.swiftを使用しなかったので、ここで質問があります。ドキュメントでは、たとえば、次のようなテーブルにアクセスできます。 'let users =テーブル( 'users')'。このテーブルが存在しない場合はどうなりますか?それはまったく無名ですか、それともクラッシュしますか? ' – TPlet