首先,这是我当前项目文件设置的图像
我在这个项目中使用以下方法:
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 上,必须在有效路径上创建应用程序文件。有效路径包括应用程序的"文档"文件夹中的路径。例如:
let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString
let dbPath = documentsPath.appendingPathComponent("data.db")
let dbQueue = try DatabaseQueue(path: dbPath)
有关详细信息,请参阅 iOS 文档的"文件系统基础知识"一章。