To begin, here is an image of my current project file set-up
我在这个项目中使用以下内容:
import UIKit
import SQLite
import GRDB
当我执行以下代码时:
{
tagString = x
let dbQueue = try! DatabaseQueue(path: "data.db" )
try! dbQueue.inDatabase { db in
let rows = try Row.fetchCursor(db, "SELECT * FROM quotes WHERE genre = ? AND LENGTH(quote) < 100",
arguments: [tagString])
我收到以下错误“无法打开数据库文件”以及警告“无法执行支持代码来读取进程中的 Objective-C 类数据。这可能会降低可用类型信息的质量。”
我尝试将“data.db”更改为简单的“data”,但这不起作用。
我找到的唯一解决方案是当我从计算机编写完整路径并在模拟应用程序上运行它时。如果我尝试在手机上使用整个路径(例如/Users/myName/Desktop/AppName/data.db),程序就会崩溃(我认为是因为手机上不存在该内存位置)
问题:我对数据库的调用正确吗?如果是这样,有什么想法可能无法找到它吗?
谢谢。
最佳答案
您收到“无法打开数据库文件”错误,因为您没有指定数据库的有效路径。
在 iOS 上,应用程序文件必须在有效路径中创建。有效路径包括应用程序的 Documents 文件夹内的路径。例如:
let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString
let dbPath = documentsPath.appendingPathComponent("data.db")
let dbQueue = try DatabaseQueue(path: dbPath)
请引用File System Basics iOS 文档章节以获取更多信息。
关于 swift 4 |正在引用数据库文件进行 SQLite 查询 "unable to open database file",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46775998/