在斯威夫特写一个单身人士为尖叫

时间:2015-06-29 17:22:06

标签: ios swift sqlite

我正在使用Squeal访问我的应用的Sqlite数据库。我想把它写成一个Singleton帮助器类,但我无法弄清楚如何创建db的类全局版本。

以下是整个文件的代码:

import Foundation

import Squeal

class DatabaseHelper {
    static let sharedInstance = DatabaseHelper()

    let databaseFile = "record_store.db"

    private init() {
        let db = Database(path:databaseFile)

        // Create the table
        db?.createTable(
            "Records",
            definitions: [
                "ID INTEGER PRIMARY KEY AUTOINCREMENT",
                "Artist TEXT",
                "Album TEXT",
                "Gnere TEXT",
                "Year TEXT",
                "Size TEXT",
                "Speed Text"
            ]
        )

        NSLog("Database Created")
    }

    func Insert() {
        NSLog("Inserting stuff")
    }

    func Delete() {
        NSLog("Deleting stuff")
    }
}

那么如何让全班的db可以访问?我试着宣布

let db

let db = Database(path:databaseFile)

但两者都会抛出我不知道如何处理的错误。

2 个答案:

答案 0 :(得分:2)

@Ali Beadle有正确的答案。我希望通过完整的示例对此进行扩展,以使其更加清晰。

我还使databaseFile一直保密。我认为你不需要其他人访问文件名,只需要访问实际数据库。

import Foundation

import Squeal

class DatabaseHelper {
static let sharedInstance = DatabaseHelper()

private let databaseFile = "record_store.db"

let db: Database

private init() {
    db = Database(path:databaseFile)

    // Create the table
    db?.createTable(
        "Records",
        definitions: [
            "ID INTEGER PRIMARY KEY AUTOINCREMENT",
            "Artist TEXT",
            "Album TEXT",
            "Gnere TEXT",
            "Year TEXT",
            "Size TEXT",
            "Speed Text"
        ]
    )

    NSLog("Database Created")
}

func Insert() {
    NSLog("Inserting stuff")
}

func Delete() {
    NSLog("Deleting stuff")
}

}

答案 1 :(得分:0)

在初始使用之外:

let db:Database

然后在init更改中:

let db = Database(path:databaseFile)

要:

db = Database(path:databaseFile)