gpt4 book ai didi

swift - 无法获取数据库路径

转载 作者:行者123 更新时间:2023-11-28 14:50:24 25 4
gpt4 key购买 nike

集成SQLITE数据库,下面是我写的代码,

AppDelegate.swift

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
self.copyDatabaseIfNeeded()
return true
}

func copyDatabaseIfNeeded() {
let fileManager = FileManager.default
let dbPath = getDBPath()
var success: Bool = fileManager.fileExists(atPath: dbPath!)
if !success {
let defaultDBPath = URL(fileURLWithPath: Bundle.main.resourcePath ?? "").appendingPathComponent(APPLICATION_DB).absoluteString
success = ((try?fileManager.copyItem(atPath: defaultDBPath, toPath: dbPath!)) != nil)
if !success {
print("Failed to create writable database!")
}
}
}

func getDBPath() -> String? {
let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
let documentsDir = paths[0]
return URL(fileURLWithPath: documentsDir).appendingPathComponent(APPLICATION_DB).absoluteString
}

它总是在输出下方打印,

enter image description here

  • 尝试清理 + 构建项目
  • 卸载应用程序,重新安装
  • 删除派生数据

以上均无效。

此外,我的 sqlite 文件位于项目目标 -> 构建阶段 -> 复制捆绑资源中:下面的屏幕截图供引用。

enter image description here

我不确定我的文件的层次结构是否重要,同时附上它的屏幕截图。

enter image description here

谁能帮我解决为什么我在获取数据库文件的文件路径时遇到问题?

最佳答案

试试这个。

func copyDatabaseIfNeeded() {
// Move database file from bundle to documents folder

let fileManager = FileManager.default

let documentsUrl = fileManager.urls(for: .documentDirectory,
in: .userDomainMask)

guard documentsUrl.count != 0 else {
return // Could not find documents URL
}

let finalDatabaseURL = documentsUrl.first!.appendingPathComponent("SQL.sqlite")

if !( (try? finalDatabaseURL.checkResourceIsReachable()) ?? false) {
print("DB does not exist in documents folder")

let documentsURL = Bundle.main.resourceURL?.appendingPathComponent("SQL.sqlite")

do {
try fileManager.copyItem(atPath: (documentsURL?.path)!, toPath: finalDatabaseURL.path)
} catch let error as NSError {
print("Couldn't copy file to final location! Error:\(error.description)")
}

} else {
print("Database file found at path: \(finalDatabaseURL.path)")
}

}

关于swift - 无法获取数据库路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49913527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com