gpt4 book ai didi

iphone - 将 SQL 行加载到索引的 UITableView

转载 作者:行者123 更新时间:2023-12-03 18:18:43 24 4
gpt4 key购买 nike

我在 SQLite 数据库中有大约 2000 行。每行都有一个整数 ID 和一个字符串值。我想将它们填充到带有字母索引的 UITableView 中,就像联系人应用程序一样。

在不使用 CoreData 的情况下实现与联系人应用程序一样好的性能是否可行,前提是我不需要重新实现 CoreData 为您所做的一切(例如缓存等)?

我尝试使用每页 50 行的分页来实现这一点,并在 tableview 滚动超过 25 行时在另一个线程中预加载下一页。如果滚动不是很快,则此方法有效,但在滚动非常快时仍然滞后。我认为填充 50 个项目的临时 NSArray 的步骤需要很长时间。

此外,这种方法不适用于 UITableView 的索引,因为加载是按顺序完成的,而索引会跳过。我考虑过在初始化时为每个索引键加载前 10 行,但同样会很慢(填充一个包含 260 个项目的数组)。

有什么建议么?

最佳答案

看起来一次获取几千行的性能应该不是什么大问题(你应该能够预取它们)。

我会在您的表上为您想要的任何列异步运行 SELECT(例如用于引用的索引,也许只是要显示的字符串)并将它们放入 NSMutableDictionary键入索引,然后重新加载表数据。 cellForRowAtIndexPath UITableViewDataSource函数会使用这个字典。

如果您允许用户选择一行来查看详细信息,那么您可以在选择时针对该行的其余数据运行查询。

ViewDidLoad 中异步执行初始提取或 ViewWillAppear将防止 UI 在用户查看表格时锁定,并且在几乎所有情况下,一旦他们真正看到表格,表格就应该已经可见。

初始提取(在后台线程上执行,然后在主线程上重新加载表)

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^()
{
//perform your query here
dispatch_async(dispatch_get_main_queue(), ^()
{
[self.tableView reloadData]
});
});

关于iphone - 将 SQL 行加载到索引的 UITableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10691306/

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