gpt4 book ai didi

带有 UITableView 的 iOS Swift 5 Realm 结果 block UI

转载 作者:行者123 更新时间:2023-11-28 08:09:00 24 4
gpt4 key购买 nike

我正在构建一个基于 Realm 数据库的应用程序。我有一个包含 5 个 UITableView 的概览屏幕,它们全部由结果和 NotificationToken 提供支持。因此,我总共有 5 个结果和 5 个 NotificationTokens(每个都有不同类型的对象)。

此概览屏幕显示在 UITabBarController 的第二个选项卡中。当我第一次运行该应用程序并选择概览选项卡时,需要很长时间才能显示该选项卡(~1 秒)。

我可以做些什么来加快加载时间或在加载结果时保持 UI 响应?

结果会加载其对象类型的所有实体。所有都按“名称”键路径排序。

最佳答案

What can I do to either speed up the loading time or keep the UI responsive while the Results are loaded?

这取决于时间花在哪里。

1。大型 Realm 文件

如果 Realm 文件很大,内存映射可能是一个计算量大的操作。如果是这种情况,您可以使用 Realm.asyncOpen(...)在后台队列上异步打开文件,在给定的回调队列(例如主队列)上传送打开的 Realm。

2。大量对象

如果您有大量对象,也许您可​​以重构数据模型以减少该数量?

例如,假设您的模型有一个 isDeleted bool 属性,您稍后在您的应用具有连接性时在您的 RESTful Web API 中手动同步这些删除操作。您可以拥有一个新模型(例如 WebOperation),而不是保留所有这些对象,而只包含执行该操作所需的信息而不是完整的对象(例如 {operation: 'delete' , id: '1234'}.

3。计算量大的查询

如果您的任何一个(或所有)查询计算量大,您可以在后台线程上异步执行它们。通过向 Realm 集合(例如 Results)添加通知 block ,如果您不同步访问 Results,通知 block 将在后台运行查询,仅当查询已被评估时,才在原始线程上的 .initial 通知中传递 Results,这会将查询操作卸载到后台线程,从而释放您的 UI 线程。

4。优化不足的查询

有些查询比其他查询更快。尝试不同的方式来构建您的查询、测量和比较结果。选择最有效的变体。

关于带有 UITableView 的 iOS Swift 5 Realm 结果 block UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44267911/

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