返回列表视图时获取所有帖子

时间:2015-10-04 20:22:04

标签: ios objective-c

设置

假设有两个视图控制器:PostsVCPostDetailVC。在PostsVC中,有100个帖子已加载。每个帖子都显示其正文,作者和评论数量。

问题

当用户首次打开应用时,将从API服务器获取100个帖子。然后他可以去其中一个帖子并对其进行评论。他回到PostsVC并意识到评论的数量仍为0

我的解决方案

PostsVC可以让观察者收听某个帖子的updateNumComment。然后,在PostDetailVC中,我可以通知评论数量发生了变化。

天真的解决方案

每次返回PostsVC时,我都可以从API服务器获取最新的posts信息(在viewWillAppear中完成)。但是,由于100个帖子中只有一个被更新,因此浪费了网络资源。

混乱

朴素的解决方案似乎运作良好。我不知道它是在获取100个帖子还是只有1个帖子。如果有更多信息需要同步,我的解决方案会变得复杂,例如评论数量,投票数,评论用户数等等。我的解决方案不是必需的?我是否在思考这个问题?

1 个答案:

答案 0 :(得分:0)

这是在优化用户体验的同时最大限度地减少网络使用率的问题。

由于您已经知道您的天真解决方案浪费了网络资源,因此您应该避免这种情况。

接下来的问题是如何在最小化服务器调用的同时更新UI。您已声明在新解决方案中,您希望使用PostsVC中的观察者来获取评论和其他详细信息的更改。管理观察者有额外的开销,例如注册和删除。

我的建议是在PostDetailVC中声明委托协议,我假设这是输入注释的地方,并且PostsVC符合此协议。添加注释后,调用委托方法以通知PostsVC更改,以便通过递增注释计数立即更新UI。

然后,您可以在后台线程上将本地数据与服务器数据同步。在更新评论的网络请求的完成块中,更新帖子的上次更新日期,以最小化未来的网络请求。