这是我的情景,
当我登录我的应用程序时,我有多个请求,其中一个响应包含10,000 +条记录。
我在我的项目中使用SQLite.swift。
如果用户没有注销,或者搜索或从db检索数据不超过1个任务,则一切正常。如果发生任何一种情况,则应用程序会卡住或崩溃。
我正在使用事务进行批量插入,但是当我尝试访问另一个相同的表数据时,应用程序会冻结,直到完成所有操作。
我尝试使用多个连接插入到db,但如果另一个连接正在使用db,那么它的锁定和应用程序崩溃
致命错误:'试试!'表达式意外地引发了一个错误:数据库 被锁定:文件 /Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-703.0.18.1/src/swift/stdlib/public/core/ErrorType.swift, 第54行
try DataManager.con.transaction {
for index in 0 ... (entity.count - 1) {
try DataManager.con.run(table.insert(
Latitude <- entity[index]["Latitude"].string,
Longitude <- entity[index]["Longitude"].string
))
}
}
这里DataManager.con是一个单例对象
请帮忙。
答案 0 :(得分:0)
使用sqlite.swift无法创建并发连接。
所以我将我的主数据移动到另一个数据库并为它创建一个单独的连接。
我还添加了
do{
// Start transaction
// code
// Commit transaction
}
catch {
}
如果用户注销或关闭应用程序,处理错误,事务也将有助于维护部分数据保存
感谢所有帮助过的人。