2014-11-23 38 views
0

如果我以前從未運行應用程序,當我在我的query.cachePolicy屬性上設置kPFCachePolicyCacheThenNetwork並運行它時,它將顯示帶有文本「緩存未命中」的UIAlertView。kPFCachePolicyCache然後網絡緩存小姐

我嘗試構建一個首先使用緩存然後使用網絡的應用程序。

沒有得到UIAlertView顯示,得到這種效果的最佳方法是什麼?

回答

3

如果你想檢查緩存未命中,你應該檢查錯誤代碼120。如果您看到該代碼,請返回(不提供您的UIAlertView)。

如果你只想要第1次看到錯誤後顯示錯誤信息,保存在NSUserDefaults一個標誌,指示第一高速緩存未命中已經遇到,並檢查錯誤代碼120並且NSUserDefaults標誌不組。我不確定爲什麼你想要向用戶展示緩存未命中,特別是如果你的策略是在訪問緩存後進入網絡,因爲它與他們無關,因爲最後一個(網絡)失敗是重要的一個。

---編輯---

要禁用使用PFQueryTableViewController時顯示的自動UIAlertView中(或者如果已啓用它)和error is encountereduser is offline,你可以使用下面的代碼:

[Parse errorMessagesEnabled:NO]; 
[Parse offlineMessagesEnabled:NO]; 

取決於您想要顯示的消息類型。我發現最好禁用所有這些,並在應用程序邏輯中處理錯誤,而不是在出現任何錯誤時顯示警報,因爲緩存未命中或未返回數據會導致錯誤發生。

如果您仍然想使用分析警報視圖來查看錯誤,但不顯示緩存未命中錯誤,那麼您可以根據緩存內容設置緩存策略。您可以測試一個查詢,看看它是否緩存了類似的結果...

if ([myQuery hasCachedResults]) { 
    myQuery.cachePolicy = kPFCachePolicyCacheThenNetwork; 
} else { 
    myQuery.cachePolicy = kPFCachePolicyNetworkOnly; 
} 

然後運行您的查詢。

+0

我沒有提供任何UIAlertView。它構建在Parse Framework中,並在緩存丟失時自動顯示。 如何防止出現此UIAlertView? – 2014-11-24 23:44:22

+0

@EdwardAnthony啊,我明白了 - 它是_that_reviewview。更新了答案。 – rickerbh 2014-11-25 21:19:39

+0

hasCachedResult似乎運作良好,我不知道爲什麼像Parse這樣的大公司沒有記錄這種簡單的警報視圖行爲。但是,謝謝,它的工作原理和[解析errorMessageEnabled:否]釘牢它。 – 2014-11-25 21:47:26