gpt4 book ai didi

ios - 我如何关闭 swift.sqlite 中的事件连接以交换其 sqlite.file

转载 作者:行者123 更新时间:2023-11-28 06:05:18 25 4
gpt4 key购买 nike

tl;博士:

如何在 Sqlite.swift 中关闭与数据库的读/写连接?

背景故事:

我正在使用 sqlite.swift 框架来管理在应用程序启动时从应用程序包 (bootstrap.sqlite) 复制的 .sqlite 文件 (data.sqlite)(如果它没有还存在)。 bundle 中的这个 sqlite 文件包含各种 Bootstrap 数据。

我希望用户“重置所有数据”,目前我的方法是删除 data.sqlite 文件并在运行时再次复制 bootstrap.sqlite 文件

不幸的是,可能仍有打开的连接/正在运行的请求明显失败/崩溃/搞砸了文件。

我试过了

dbWriteConnection?.interrupt()
dbReadConnection?.interrupt()
try? fileManager.removeItem(at: localSqlitePathURL)

但这似乎以某种方式删除了 sqlite 中的表。

有没有办法取消所有正在运行的请求/保证连接空闲?

最佳答案

AFAIK 关闭 SQLite.swift 中的数据库连接只能通过取消分配您正在使用的 Connection 对象来隐式完成。我在类似情况下所做的是 a) 将连接保持为 var db: Connection? 以便我可以将 nil 分配给它们,以及 b) 使用信号量/锁以确保数据库访问或我的数据库切换代码正在运行。

tl;dr

dbWriteConnection = nil
dbReadConnection = nil

关于ios - 我如何关闭 swift.sqlite 中的事件连接以交换其 sqlite.file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48406966/

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