4

単純な IOS アプリ (IOS 9 をターゲット) に sqlite.swift (swift-2 バージョン) を使用しようとしています。私はデータベースを作成しています/次を使用して既存のデータベースに接続しています:

func connectDB() -> Bool {

    let path = NSSearchPathForDirectoriesInDomains(
        .DocumentDirectory, .UserDomainMask, true
        ).first!

    let db = try? Connection("\(path)/db.sqlite3")
    return (db != nil)
}

(シミュレーターで) ディスク上に作成されているデータベース、db.sqlite3、ゼロ バイトを確認できます。

今、次を使用してテーブルを作成すると:

func createTableVehiclesAndFillFromAPI() -> Bool {
    let vehicles = Table("vehicles")
    let id = Expression<Int64>("id")
    let name = Expression<String?>("name")
    let model = Expression<String>("model")
    let manufacturer = Expression<String>("manufacturer")

    do {
    try db.run(vehicles.create (ifNotExists: true) { t in
        t.column(id, primaryKey: true)
        t.column(name)
        t.column(model)
        t.column(manufacturer)
        })          
    } catch {
       print ("create table vehicles FAILED")
    }

次を使用して10行を挿入してみてください。

let insert = vehicles.insert(
    name <- item ["name"].stringValue,
    model <- item ["model"].stringValue,
    manufacturer <- item ["manufacturer"].stringValue)

let _ = try! db.run(insert)

最後に を呼び出すとlet count = try db.scalar(vehicles.count)、10 が出力されるため、テーブルの作成と挿入は期待どおりに機能します。ただし、ディスク上の sqlite データベースのサイズは変わりません。さらに、次にアプリを実行すると、データベースが再び空であるかのように、テーブルが再作成されます。

ここで明らかな何かが欠けていますか?

4

0 に答える 0