FMDB 和 UITableView

Posted

技术标签:

【中文标题】FMDB 和 UITableView【英文标题】:FMDB and UITableView 【发布时间】:2010-11-12 22:42:59 【问题描述】:

我们在 sqlite3 中有一个包含许多行的数据库。我们正在使用 SQLite3 的 FMDB Wrapper 在 UITableView 中显示数据。我们最好不要使用分页,因为这对于 iPhone/iPad 应用程序来说感觉很正常。我们希望,如果我们必须这样做,我们可以以 400 条左右的记录的形式这样做。

最好的方法是什么?有什么方法可以调用数据库上的

-(UITableViewCell *)tableView:(UITableView *)tableView 
        cellForRowAtIndexPath:(NSIndexPath *)indexPath`

?

即使我们做一个“更多记录...”表格单元格,一旦它们达到一个巨大的数字会发生什么?我们是否必须进行双向分页?

处理这个问题的最佳方法是什么?

谢谢。

【问题讨论】:

【参考方案1】:

这就是我所做的,具有类似设置的 UITableView 有数千行。

我有一个数组(实际上是一个 C++ stl 向量),其中数组中的每个项目都映射到 UITableView 中的一行。填充了我要显示的项目的 sqlite 记录 ID 的数组。数组占用的内存是每行 4 个字节。

cellForRowAtIndexPath 在数组中查找记录 ID,然后从 sqlite 查询单元格所需的字段。由于 SQLite 索引记录 ID 列,因此速度非常快。

我的实际上有点复杂,因为我有 TableView 部分以及 TableView 索引。但并不过分复杂。

【讨论】:

我使用了类似的方法,但使用 [db executeQuery:@"select x from items where id in (?,?,?,?,?,?,?, ?,?,?)" withArgumentsInArray:ids]。启用语句缓存后,速度足以在第一代 iPod touch 上平滑滚动 10,000 行表视图。 在哪里可以找到此类项目的源代码示例?谢谢。

以上是关于FMDB 和 UITableView的主要内容,如果未能解决你的问题,请参考以下文章

如何将 FMDB 与 cocoapods 和 swift 一起使用?

IOS FMDB

使用 Swift + FMDB 打开和关闭数据库

FMDB浅析

如何在 Swift 中使用“FMDB/SQLCipher”进行加密和解密?

FMDB基本操作