问题标签 [sqlite.swift]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1308 浏览

ios - 使用 sqlite swift iOS 多次访问 sqlite 数据库

这是我的场景,

当我登录我的应用程序时,我有多个请求,其中一个响应包含 10,000 多条记录。

我在我的项目中使用 SQLite.swift。

如果用户不注销或不超过 1 项任务(例如从 db 搜索或检索数据),则一切正常。如果发生任何情况,则应用程序会卡住或崩溃。

我正在使用事务进行批量插入,但是当我尝试访问另一个相同的表数据时,应用程序会冻结,直到一切都完成。

我尝试使用多个连接插入到数据库,但如果另一个连接正在使用数据库,那么它的锁定和应用程序崩溃

致命错误:“试试!” 表达式意外引发错误:数据库已锁定:文件 /Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-703.0.18.1/src/swift/stdlib/public/core/ErrorType.swift,第 54 行

这里 DataManager.con 是一个单例对象

请帮忙。

0 投票
1 回答
719 浏览

swift - 如何使用 IN 条件访问 SQLite.swift 中的 FTS 表

我正在尝试使用 SQLite.swift 查询 FTS 表。以前我在 Android 中做过。我想做的事情的本质

SQLite.swift 文档中,我看到IN条件可以这样

并且可以像这样查询虚拟表:

但是,我不知道如何组合这些。我真的不想执行任意 SQL(尽管这要归功于这个答案的帮助)。

更新

这是我最近的尝试,但不起作用:

contains(id)抛出错误的行:

无法将“表达式”类型的值转换为预期的参数类型“@noescape (Row) throws -> Bool”

0 投票
1 回答
1575 浏览

swift - 从 SQLite.swift 中正确绑定的任意 SQL 语句中获取结果

SQLite.swift文档说关于执行任意 SQL:

我想像这样直接获取值

但是行索引是类型的Binding?,我不知道如何将其转换为我需要的类型。我看到源代码中有一个Statement.bind方法,但我仍然没有发现如何应用它。

0 投票
0 回答
185 浏览

query-performance - 如何在 sqlite.swift 中获取查询执行时间?

所以 SQLite.swift 非常棒。我让它使用以下方法跟踪我的 SQL 查询:

它工作正常。但是,我还想在输出中添加 SQL 执行时间。

任何想法如何做到这一点?

0 投票
2 回答
722 浏览

ios - 无法为 SQLite Swift 包装器导入 SQLite

我完全按照 SQLite.Swift 手动安装过程(https://github.com/stephencelis/SQLite.swift),但在“import SQLite”处出现红色警告。

OSX (10.11.6) XCode 7.3.1

问题

我需要创建并包含头文件吗?

参考资料

在 SQLite.xcodeproj 中,会自动链接 libsqlite3.tbd 而不是 libsqlite3.dyslib。

0 投票
1 回答
600 浏览

swift - SQLite.swift 和 Swift 3 “在连接中对成员 == 的模糊引用

我正在开发一个使用 SQLite 数据库的 iOS 应用程序,并且我使用 SQLite.swift 库(https://github.com/stephencelis/SQLite.swift)。

我正在尝试在 Swift 3 中迁移我的应用程序,所以我更改了我的库以使用分支swift3-mariotakuhttps://github.com/stephencelis/SQLite.swift/tree/swift3-mariotaku

当我尝试使用 a 时,我仍然遇到一个问题joinAmbiguous reference to member ==

这是我的代码:

经过几次搜索,我发现这个线程Swift 3 URLSession.shared() Ambiguous reference to member 'dataTask(with:completionHandler:) error (bug)。所以我尝试应用在on参数中指定返回类型的解决方案,如下所示:

我也尝试精确每个元素:

错误仍然相同。

我检查了库代码,但我不知道如何解决这个问题,所以这是使用的库代码,也许它应该有助于理解:

join方法:

==过载:

String扩展名(用于方法infix):

谢谢您的帮助

0 投票
2 回答
1076 浏览

xcode - ios SQLite.swift 项目与 Swift 3.0

我正在将我的 iOS 应用程序迁移到 Xcode8 和 Swift 3。我更新了依赖项版本,除了 SQLite.swift 之外,一切看起来都很好。在我的“import SQLite”行的项目中,我有这个错误:

使用 Swift 2.3 编译的模块无法导入 Swift 3.0 ...

而我的目标是最新版本的 SQLite.swift。对于 Pods 项目下的目标“SQlite.swift”,我还将“使用旧版 Swift 语言版本”设置为“是”。知道我缺少什么吗?

我的 pod 文件如下所示:

0 投票
0 回答
287 浏览

ios - 连接 SQLite 数据库失败时 iOS 显示错误

当我的 iOS 应用程序启动时,我想使用SQLite.swift连接到本地 SQLite 数据库,然后向用户显示存储在数据库中的项目列表。建立数据库连接即可throw。如果连接失败,那么我想向用户显示一个很好的错误消息。

Main.storyboard中,我的根视图控制器是UINavigationController. 导航控制器的根/顶视图控制器是一个UIViewController包含UITableView用于显示数据库中项目的一个。

我的第一个想法是连接到AppDelegate's中的数据库application(_:didFinishLaunchingWithOptions:)并以某种方式UIAlertControllerUIViewController. 我似乎无法UIViewControllerUIAlertController. 即使可以,我也开始怀疑这种方法,因为如果无法从数据库中加载项目,那么表格将无法在警报下呈现。我正在努力的是这样的:

我的第二个想法仍然是连接到AppDelegate's中的数据库application(_:didFinishLaunchingWithOptions:)。如果抛出,则将窗口的根视图更改为用户将看到的错误视图。这样,显示项目的表格甚至永远不会尝试显示项目。

我的第三个想法是变得AppDelegate更加懒惰并将问题解决。只需创建一个知道 SQLite 数据库文件路径的数据访问对象。将 dao 传递给UIViewController充当UITableView. throw当数据源第一次需要来自数据库的信息时,让 dao 尝试连接(并在必要时迁移数据库模式等)并在那时让它连接。即使 dao 已经连接到数据库,也可能需要为访问数据做好UITableView准备。throw

您可以分享任何优雅处理此问题的经验吗?

谢谢!

0 投票
1 回答
92 浏览

ios - tableView(_:numberOfRowsInSection:) 中抛出错误怎么办?

在我的 iOS 应用程序中,我有一个 SQLite 数据库,其中包含一个items包含许多行的表。我避免将所有项目加载到内存中,而是只加载当前显示在UITableView.

我正在使用SQLite.swift,它可以throw在与数据库交互时使用。如果从items表中获取计数throw,那么正确的做法是什么?

我尝试显示用户无法像这样关闭的警报。

Items类是这样的。

0 投票
1 回答
451 浏览

xcode - 无法使用 Xcode 8.0 和 Swift 3 构建子项目

我正在运行 Xcode 8.0 构建版本 8S174q 和 Apple Swift 版本 3.0 (swiftlang-800.0.34.6 clang-800.0.33)。

https://github.com/stephencelis/SQLite.swift我安装了 0.11.0 版本(注意它是用 Swift 3 编写的)。我已经在该网页上尝试了三种安装方法,经过一天的折腾仍然无法编译 sqlite.swift。通过 Xcode Report Navigator (CMD-8),我看到了数百个编译错误,其中一些我已粘贴在下面。

我最初怀疑没有使用 swift 3.0 编译器,但通过查看编译命令(如下)似乎并非如此。

我尝试了 3 种安装 SQLite.swift 的方法——使用 Carthage、cocoapods 并将 SQLite.swift 作为 Xcode 子项目安装。我无法构建 SQlite.swift。

请帮忙!我是 iOS 开发、Xcode 和工具的新手,所以对此感到困惑。下面我添加了一些更详细的信息,例如生成错误的编译命令。你能建议一个可能的解决方案,甚至是我可以尝试构建这个子项目的东西吗?