【发布时间】:2014-09-13 17:53:51
【问题描述】:
我正在使用 NSUrlConnection 从 Web 服务中获取一些数据,该服务在我点击 url 时返回 JSON 数据,但有时页面会关闭或出现问题。
当网页返回 404 时,有没有办法在我的 iOS 应用程序中使用缓存版本的 url 来获取该数据?
如果我在浏览器中访问缓存:mysite.com/test.php,即使页面关闭,我也可以看到 JSON 数据,但是当我尝试在我的 iOS 应用程序中使用相同的 url 时,我没有得到JSON 数据返回。
是否有我不知道的 Obj C 类或 NSUrlConnection 的选项?
【问题讨论】:
-
当您发出请求并且请求成功时,您为什么不将它们存储在您自己的缓存中,它可以是一个持久的自定义对象(核心数据,sqllite等)?然后,您可以从缓存中获取任何失败的未来调用,并让用户知道调用失败并且您正在向他们展示您在缓存元数据中指定的任何日期最后一次获取的缓存版本。
-
这就是我在其他任何情况下都会做的事情,但特别是对于这个应用程序,我想查看网页缓存。我以前看过它,但我找不到任何关于如何自己做的信息。
-
知道了,事实上,现在我已经对此进行了更多研究,这实际上听起来像是每个人的应用程序都可以遵循的好习惯。请参阅nshipster.com/nsurlcache 但我不知道如何在发生 404 时专门强制使用缓存,而不是创建自己的缓存以仅在这些情况下使用并在 normal 情况下使用 NSUrlCache。
-
优秀的文章!我必须说,NSHipster 是 Obj C 的一个了不起的来源!然而,通读这两篇文章,他们解释了如何在响应连同其数据一起被抓取时缓存数据。我正在寻找的是如何在我决定如何处理它返回的数据之前获取 url 的缓存版本。
-
您可以继承 NSURLCACHE,您将不得不使用它们的实现,因为在您的情况下,您希望将缓存用于 404,或者很可能在发生 500 错误时使用......blog.originate.com/blog/2014/02/20/afimagecache-vs-nsurlcache
标签: ios objective-c nsurlconnection