2015-10-04 84 views
0

設置回到列表視圖

假設有兩個視圖控制器時抓取所有帖子:PostsVCPostDetailVC。在PostsVC有100個帖子加載。每篇文章顯示其主體,作者和評論數量。

問題

當用戶第一次打開的應用程序,100個職位是從API服務器獲取。然後,他可以轉到其中一個帖子並發表評論。他回到PostsVC,實現評論的數量仍然是0

我的解決方案

PostsVC可以有一個監聽updateNumComment一定職位的觀察員。然後,在PostDetailVC中,我可以通知評論數量發生了變化。

天真的

每次回去PostsVC我可以獲取從API服務器(在viewWillAppear完成)的最新posts信息。但是,由於100個帖子中只有一個被更新,所以這浪費了網絡資源。

混亂

天真的解決方案似乎工作得很好。我無法分辨它是抓取100個帖子還是隻發佈1個帖子。 我的解決方案可能會變得複雜,如果有更多的信息要同步,如評論數量,票數,評論的用戶數量等。是我的解決方案沒有必要嗎?我是否在解決問題?

回答

0

這是一個優化用戶體驗,同時最大限度地減少網絡使用的問題。

既然你已經知道你的天真解決方案是浪費網絡資源,那麼這就是你想要避免的。

問題就變成了如何在最小化服務器調用的同時更新UI。您已經聲明,在您的新解決方案中,您希望使用PostsVC中的觀察員來獲取有關注釋和其他詳細信息的更改。管理觀察員需要額外的開銷,例如註冊和移除。

我的建議是在你PostDetailVC,在這裏我假定這就是正在輸入的註釋,而不是聲明一個代理協議,並有PostsVC符合本協議。添加評論時,調用委託方法通知PostsVC的更改,以便可以通過增加評論計數立即更新UI。

然後,您可以將本地數據與後臺線程上的服務器數據同步。在更新評論的網絡請求的完成塊中,更新帖子的最新更新日期,以最小化將來的網絡請求。