Swift已连接到SQLite数据库,但找不到文件

时间:2019-01-26 20:42:49

标签: swift sqlite

我是Swift的新手,今天我遵循了教程here(SQLite入门)。 因此,我的代码基本相同:

import Foundation
import UIKit
import Alamofire
import SwiftyJSON
import SQLite.Swift
import PlaygroundSupport

enum SQLiteError: Error {
    case OpenDatabase(message: String)
    case Prepare(message: String)
    case Step(message: String)
    case Bind(message: String)
}

class SQLiteDatabase {
    fileprivate let dbPointer: OpaquePointer?

    fileprivate init(dbPointer: OpaquePointer?) {
        self.dbPointer = dbPointer
    }

    deinit {
        sqlite3_close(dbPointer)
    }

    static func open(path: String) throws -> SQLiteDatabase {
        var db: OpaquePointer? = nil
        // 1
        if sqlite3_open(path, &db) == SQLITE_OK {
            // 2
            return SQLiteDatabase(dbPointer: db)
        } else {
            // 3
            defer {
                if db != nil {
                    sqlite3_close(db)
                }
            }

            if let errorPointer = sqlite3_errmsg(db) {
                let message = String.init(cString: errorPointer)
                throw SQLiteError.OpenDatabase(message: message)
            } else {
                throw SQLiteError.OpenDatabase(message: "No error message provided from sqlite.")
            }
        }
    }
}

let db: SQLiteDatabase

do {
    db = try SQLiteDatabase.open(path: "")
    print("Successfully opened connection to database.")
} catch SQLiteError.OpenDatabase(_) {
    print("Unable to open database. Verify that you created the directory described in the Getting Started section.")
    PlaygroundPage.current.finishExecution()
}

问题是Swift确认我已经“已成功打开与数据库的连接”。但是关键是我从未为数据库创建文件...而且我不知道在哪里可以找到实际文件。

数据库路径应为racine,因为变量设置为默认文件夹(“”)

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

默认文件夹很可能是Xcode创建的文件夹,类似/Users/"your username"/Library/Developer/Xcode/DerivedData/<Project name>...

要进行检查,您可以在打开数据库的位置添加以下内容

let current = FileManager.default.currentDirectoryPath
print(current)

如果您查看本教程,会发现他们确实使用了特定的文件夹。