2014-11-23 37 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