如果我之前从未运行过应用程序,当我在query.cachePolicy属性上设置kPFCachePolicyCacheThenNetwork并运行它时,它将显示UIAlertView文本" cache miss"。
我尝试构建一个先使用缓存然后再使用网络的应用程序。
如果没有UIAlertView显示,获得此效果的最佳方法是什么?
答案 0 :(得分:3)
如果要检查缓存未命中,则应检查错误代码120
。如果您看到该代码,只需返回(不显示您的UIAlertView
)。
如果您只想在第一次看到错误后显示错误消息,请在NSUserDefaults
中保存一个标志,指示遇到第一次缓存未命中,并检查错误代码120
并且未设置NSUserDefaults
标志。我不确定您为什么要向用户显示缓存未命中,特别是如果您的策略是在点击缓存后转到网络,因为它的类型是与他们无关,因为最后(网络)失败是重要的。
---编辑---
要禁用使用PFQueryTableViewController(或已启用它)和error is encountered或user is offline时显示的自动UIAlertView,您可以使用以下代码:
[Parse errorMessagesEnabled:NO];
[Parse offlineMessagesEnabled:NO];
取决于您要显示的消息类型。我发现通常最好禁用所有这些,并在应用程序逻辑中处理错误,而不是在出现任何错误时显示警报,因为缓存未命中或返回的无数据都可能导致错误。
如果您仍然希望使用解析警报视图来查找错误,但不显示缓存未命中错误,那么您可以根据缓存内容设置缓存策略。您可以测试查询以查看它是否缓存了类似...
之类的结果if ([myQuery hasCachedResults]) {
myQuery.cachePolicy = kPFCachePolicyCacheThenNetwork;
} else {
myQuery.cachePolicy = kPFCachePolicyNetworkOnly;
}
然后运行您的查询。