iOS:UITableViewController - 什么时候刷新(设计)?

时间:2012-07-01 05:59:39

标签: ios notifications refresh uitableview push

我有一个显示消息列表的UITableViewController。我使用CoreData和NSFetchedResultsController来兑现/存储与单元格对应的每个对象。我想知道什么时候刷新表与服务器同步。一方面,我只能进行手动刷新,但我希望表格视图自动同步。另一方面,每次表格视图出现时我都可以刷新,但这看起来很浪费。 在这种情况下,通常的做法是什么?使用推送通知并在每次收到推送时刷新?但是如果用户禁用推送通知怎么办?

1 个答案:

答案 0 :(得分:0)

我假设当你说“服务器”时,你在谈论互联网上的一些远程服务器。在这种情况下,如果用户需要/想要的服务器上经常更新,则在查看tableview时刷新是不合理的(或者更准确地说,询问服务器是否需要刷新并且仅下载更新而不是比重新下载所有内容,只有在有新数据时才刷新......这种情况取决于服务器的性质)。但是,如果您执行此类逻辑,则需要异步执行此操作,因此在后台检查更新时不会延迟用户体验。但是,如果用户很有可能需要/想要更新数据,请节省他们点击刷新按钮的工作量。想想邮件程序:你想看到你现有的电子邮件,但是你可能希望程序在你每次拉出“电子邮件列表”表视图时检查电子邮件。

如果服务器更新不频繁和/或如果您的服务器协议有点慢,那么您可以放入一些混合“当仅在最后一次刷新超过x分钟之前出现tableview时刷新”。如果您对数据刷新执行此类条件检查,则可能必须提供UI以允许用户手动刷新,查看上次刷新的时间等。想一想不太可能的公司新闻源要进行大量的每分钟更新,而是每日或每周更新。

此外,我之前的一些评论暗示,您可能希望确保在后台进行服务器更新,也可能主动进行。 (例如,一旦应用程序启动,您可能希望在后台启动对更新服务器数据的检查,从而减少用户转到特定tableview时的延迟)。或者,当用户仍在相关的桌面视图上时,您可能会触发对更新的异步检查(例如,您正在查看正在进行的体育赛事的得分摘要)。这完全取决于服务器数据更改的性质,您可以访问的服务器接口类型以及用户的期望。无论如何,如果你能阻止它,就永远不要用恼人的微调器等来阻止用户界面。

所以,遗憾的是,您的问题没有简单的答案,因为答案至少取决于(a)服务器响应有关数据更新存在的查询的速度,并随后下载这些更新; (b)服务器数据变化的频率; (c)用户查找更新数据的可能性(没有用户认为必须始终点击刷新按钮的用户体验)。