2012-07-01 90 views
0

我有一個顯示消息列表的UITableViewController。我使用CoreData和NSFetchedResultsController來兌現/存儲與單元格對應的每個對象。我想知道什麼時候刷新表以與服務器同步。一方面,我只能手動刷新,但我希望表格視圖自動同步。另一方面,每當表格視圖出現時我都可以刷新,但這看起來很浪費。 在這種情況下,常規方法是什麼?每次收到推送時都使用推送通知並進行刷新?但是,如果用戶禁用推送通知呢?iOS:UITableViewController - 什麼時候刷新(設計)?

回答

0

我假設你說「服務器」時,你說的是互聯網上的一些遠程服務器。在這種情況下,如果在服務器上頻繁更新用戶需要/想要的內容,則在出現表格視圖時刷新並非不合理(或者更準確地說,詢問服務器以查看是否需要刷新並且只需下載更新而不是重新下載所有內容,只有在有新數據時才刷新......這取決於服務器的性質)。但是,如果您執行此類邏輯,則需要異步執行此操作,以便在後臺檢查更新時不會延遲用戶體驗。但是,如果用戶很可能需要/希望更新數據,請將它們省去點擊刷新按鈕。想想郵件程序:你想看看現有的電子郵件,但是你可能希望程序每次提取「電子郵件列表」tableview時檢查郵件。

如果服務器更新不頻繁和/或您的服務器協議有點慢,那麼您可能會放入一些混合的「當tableview僅在最後一次刷新超過x分鐘前纔出現時刷新」。如果您進行數據刷新的這種有條件檢查,那麼您可能必須提供一個用戶界面以允許用戶手動刷新,查看最後一次刷新的時間,等等。想想公司新聞訂閱源哪裏不太可能成爲大量的分鐘更新,而是每日或每週更新。

此外,我之前的一些評論暗示,您可能想確保您在後臺執行服務器更新,也可能是主動進行服務器更新。 (例如,您可能希望在應用程序啓動後立即啓動對後臺服務器數據的更新檢查,減少用戶轉至特定的tableview時的延遲)。或者,當用戶仍然處於問題的桌面視圖中時(例如,您正在查看正在進行的體育賽事的得分摘要),您可能會觸發對更新的異步檢查。這一切都取決於服務器數據更改的性質,您可以訪問的服務器接口類型以及用戶的期望。無論如何,如果你能阻止它,不要用惱人的紡紗者或類似的東西阻擋用戶界面。

因此,不幸的是,您的問題沒有簡單的答案,因爲答案取決於(a)服務器能夠多快地響應有關數據更新存在的查詢,並隨後下載更新; (b)服務器數據更改的頻率; (c)用戶在多大程度上尋找更新的數據(沒有用戶感覺必須一直點擊刷新按鈕的用戶體驗)。