带Swift的sqlite3:特定路径不工作

带Swift的sqlite3:特定路径不工作,swift,sqlite,Swift,Sqlite,我一直试图为我的SQLite数据库设置一个特定的路径,但它不起作用,无论是相对的还是绝对的,除了“file:myDB” 知道为什么吗 func openDatabase() -> OpaquePointer? { var db: OpaquePointer? let path = "file:///Users/me/Desktop/myDB.db" if sqlite3_open_v2(path, &db, SQLITE_OPEN_URI | SQLITE_O

我一直试图为我的SQLite数据库设置一个特定的路径,但它不起作用,无论是相对的还是绝对的,除了“file:myDB”

知道为什么吗

func openDatabase() -> OpaquePointer? {

var db: OpaquePointer?
let path = "file:///Users/me/Desktop/myDB.db"
if sqlite3_open_v2(path, &db, SQLITE_OPEN_URI | SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, nil) == SQLITE_OK {
    print("successfully opened connection to database at \(path)")
    return db
}
else {
    print("Unable to open database.")
    sqlite3_close(db)
}

}
let db = openDatabase()

并非所有版本的SQLite都使用URI支持编译。您可能需要检查这一点,并捕获
sqlite3\u open()
的返回代码,以查看它是否提供了更多信息。此外,应用程序现在已沙盒化,因此您不能只在任何地方打开文件。如果它不在沙箱中,则必须向用户请求权限。问题是您是否真的需要在非沙盒文件夹中创建数据库,或者您是否同样乐意在“application support”目录中创建数据库,例如,这不需要用户批准。您可能还需要调用
sqlite3\u errmsg
以在
else
子句中获取有意义的错误消息。谢谢。我忘了沙箱的事了。。。在此字段中已停用太久。我会查的!