我有一个显示消息列表的 UITableViewController。我使用 CoreData 和 NSFetchedResultsController 来兑现/存储与单元格对应的每个对象。我想知道何时刷新表以与服务器同步。一方面,我只能手动刷新,但我希望表格视图自动同步。另一方面,每次表格视图出现时我都可以刷新,但这似乎很浪费。在这种情况下,正常的方法是什么?每次收到推送时使用推送通知并刷新?但是如果用户禁用推送通知怎么办?
1 回答
我假设当您说“服务器”时,您指的是 Internet 上的某个远程服务器。在这种情况下,如果服务器上有用户需要/想要的频繁更新,则在 tableview 出现时刷新并不是不合理的(或者更准确地说,询问服务器以查看是否需要刷新并且只下载更新而不是而不是重新下载所有内容,并且仅在有新数据时才刷新……这取决于您服务器的性质)。但是,如果您执行此类逻辑,您将希望异步执行此操作,因此当您在后台检查更新时不会延迟用户体验。但是,如果用户很有可能需要/想要更新的数据,请省去点击刷新按钮的工作。想想邮件程序:您想查看现有的电子邮件,
如果服务器更新不频繁和/或如果您的服务器协议有点慢,您可能会加入一些“只有在上次刷新时间超过 x 分钟前才出现 tableview 时刷新”的混合。如果您对数据刷新进行这种条件检查,那么您可能必须提供一个 UI 以允许用户手动刷新、查看上次刷新发生的时间等。想想不太可能出现的公司新闻提要是大量的每分钟更新,而是每天或每周更新。
此外,正如我之前的一些评论所暗示的那样,您可能希望确保在后台进行服务器更新,并且可能还需要主动更新。(例如,您可能希望在应用程序启动后立即在后台启动更新服务器数据的检查,从而减少用户进入特定表格视图时的延迟)。或者,您可能会在用户仍在相关表格视图上时触发异步更新检查(例如,您正在查看正在进行的体育赛事的得分摘要)。这完全取决于服务器数据更改的性质、您可以访问的服务器接口类型以及用户的期望。无论如何,如果你能阻止它,永远不要用烦人的微调器或类似的东西来阻止用户界面。
因此,不幸的是,您的问题没有简单的答案,因为答案至少取决于 (a) 服务器可以多快响应有关数据更新存在的查询,然后下载这些更新;(b) 服务器数据更改的频率;(c) 用户寻找更新数据的可能性有多大(没有用户感到不得不一直点击刷新按钮的 UX)。