kPFCachePolicyCacheThenNetwork Cache Miss

时间:2014-11-23 22:16:24

标签: ios caching parse-platform

如果我之前从未运行过应用程序,当我在query.cachePolicy属性上设置kPFCachePolicyCacheThenNetwork并运行它时,它将显示UIAlertView文本" cache miss"。

我尝试构建一个先使用缓存然后再使用网络的应用程序。

如果没有UIAlertView显示,获得此效果的最佳方法是什么?

1 个答案:

答案 0 :(得分:3)

如果要检查缓存未命中,则应检查错误代码120。如果您看到该代码,只需返回(不显示您的UIAlertView)。

如果您只想在第一次看到错误后显示错误消息,请在NSUserDefaults中保存一个标志,指示遇到第一次缓存未命中,并检查错误代码120并且未设置NSUserDefaults标志。我不确定您为什么要向用户显示缓存未命中,特别是如果您的策略是在点击缓存后转到网络,因为它的类型是与他们无关,因为最后(网络)失败是重要的。

---编辑---

要禁用使用PFQueryTableViewController(或已启用它)和error is encountereduser is offline时显示的自动UIAlertView,您可以使用以下代码:

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

取决于您要显示的消息类型。我发现通常最好禁用所有这些,并在应用程序逻辑中处理错误,而不是在出现任何错误时显示警报,因为缓存未命中或返回的无数据都可能导致错误。

如果您仍然希望使用解析警报视图来查找错误,但不显示缓存未命中错误,那么您可以根据缓存内容设置缓存策略。您可以测试查询以查看它是否缓存了类似...

之类的结果
if ([myQuery hasCachedResults]) {
  myQuery.cachePolicy = kPFCachePolicyCacheThenNetwork;
} else {
  myQuery.cachePolicy = kPFCachePolicyNetworkOnly;
}

然后运行您的查询。