也许我可以澄清一下其他人在说什么。
正如您肯定知道的那样,表视图必须有一个数据源,该数据源至少实现了<UITableViewDatasource>
协议中的两个必需方法:
– tableView:cellForRowAtIndexPath:
– tableView:numberOfRowsInSection:
我怀疑您当前的实现– tableView:cellForRowAtIndexPath:
只是从全局集合对象中获取两个字符串,将它们弹出到一个单元格中(希望一个被正确重用的单元格!)并返回它。
它可能应该做的是根据需要从数据库中检索这些数据。我会实现一个类(或多个类)来在应用程序和数据库之间进行调解,并将例如 100 行的块返回到充当数据源的任何类(SQLite 支持 LIMIT 和 OFFSET 关键字),它将持有到那个有限的集合上。
当– tableView:cellForRowAtIndexPath:
被 tableView 调用时,您可以检查数据是否在本地存储的块中(我会创建一个属性来存储当前的记录偏移量),如果没有,则使用对 DB 的请求来更新本地块以进行下一个(或以前,视情况而定)100 条记录。
快速。在任何给定时间,内存中都有固定数量 (100) 的记录,数据源根据需要向表视图提供数据。你可以变得更漂亮,但这是一般的想法。
至于搜索,假设您正在对标题进行自由文本搜索,只需让数据库中介发出类似的问题
'select id, title, description from yourTable where title like ?'
并绑定?无论用户键入什么,在适当的地方使用通配符(不要忘记清理您的输入......并不是说任何人都极有可能在您的 iPhone 应用程序上执行 SQL 注入,但是,习惯和所有...... :)
显然,如果您只是搜索而不是过滤结果,您将不得不稍微调整一下,但希望这是一个开始。
祝你好运!