NSURLCache 缓存响应问题

2024-04-01

我正在编写一个 iPhone 应用程序,其中一个选项卡是 twitter feed,我正在解析 twitter xml 并将其很好地放入表格视图中。 如果没有互联网连接,我想显示上次有互联网连接和更新表时的缓存结果。 我使用 NSURLCache 来实现这一点,如下所示:

NSURLRequest *theRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:xmlLink]
        cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:60];
NSURLCache *sharedCache = [NSURLCache sharedURLCache];

NSCachedURLResponse *response = [sharedCache cachedResponseForRequest:theRequest];

if (response) {
   NSLog(@"Got Response");
} else {
   NSLog(@"Didn't got Response");  
}
 self.objectFeedConnection = [[[NSURLConnection alloc] initWithRequest:theRequest delegate:self startImmediately:YES] autorelease];

我可以看到 NSLog 第一次输出“没有得到响应”,因为这是第一次访问该网站(http://www.twitter.com/.. http://www.twitter.com/...) 我还可以看到响应正在被缓存,因为我实现了 willCacheResponse 方法,该方法在 initWithRequest 启动后被调用,如下所示:

 - (NSCachedURLResponse *) connection:(NSURLConnection *)connection 
   willCacheResponse:(NSCachedURLResponse *)cachedResponse
 {
    NSLog(@"willCache Reponse"); 
    NSCachedURLResponse *newCachedResponse = nil;    
    if ([[[[cachedResponse response] URL] scheme] isEqual:@"http"]) {
            newCachedResponse = [[[NSCachedURLResponse alloc]
            initWithResponse:[cachedResponse response]
            data:[cachedResponse data]
            userInfo:nil
            storagePolicy:[cachedResponse storagePolicy]]
            autorelease];
 }
     return newCachedResponse;
}

我第二次访问这个网站时,我可以清楚地看到 NSLog 输出“Got Response”,这意味着存在缓存命中,因此 willCacheResponse 应该not再次被调用,但由于某种奇怪的原因,它被一次又一次地调用,并且不会从缓存中提取信息,而是尝试再次缓存它。

知道是什么导致了这个问题吗?

Thanks!


OP 可能不再关心,但对于其他玩这个的人来说 - 您应该查看响应中返回的 HTTP 标头。 NSURLCache 将检查标头来决定是否可以使用从缓存返回的内容。缓存控制:上次修改时间:Etag:等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NSURLCache 缓存响应问题 的相关文章

  • UIScrollView - 启用分页后,我可以“更改”页面宽度吗?

    将滚动视图 将 pagingEnabled 设置为 YES 将页面宽度设置为滚动视图边界以外的其他值的最简单方法是什么 让我举个例子 假设我有一个包含 10 个项目的滚动视图 每个项目的宽度为 150 像素 而我的滚动视图的宽度为 300
  • iphone:如何停止快门动画?

    我有两个问题 1 我想知道如何在相机加载时停止快门动画 我正在使用 UIImagePickerController 我已经参考了堆栈溢出的许多答案 但没有成功 2 我在相机中有一个自定义按钮 使用cameraOverlayView并想通过单
  • iPhone 和加密库

    我想我必须在我的 iPhone 应用程序中使用加密库 我想问你有关苹果公司实施的加密货币出口政策的影响 我需要做一些额外的事情吗 例如填写表格等 1 如果我使用 MD5 进行哈希处理 2 如果我使用对称加密 Thanks EDIT 2009
  • 苹果推送通知在生产中不起作用

    我们完全陷入困境 请帮忙 我和我的团队制作了一个 iPhone 应用程序 这是我们第一次在 iOS 上尝试 一切都很好 直到我们提交应用程序并在应用程序商店上可用为止 推送通知服务无法正常工作 我在网上搜索并尝试根据人们的建议仔细检查我们的
  • 如何测试 UITextField 是否为零?

    我正在尝试制作我的应用程序的一部分 如果该人不更改我的 UITextField 中的空白文本 那么他 她将无法继续下一步 基本上 我想测试 UITextField 的 nil 文本 我已经使用了 if text 方法 但是如果用户单击 UI
  • 在 swrevealcontroller 之前实现登录屏幕

    我刚刚开始学习 IOS 开发 我已经按照给定的在线教程成功实现了 SWRevealViewController 一切都按预期工作 然后 我决定添加一个登录屏幕 这将是应用程序运行时用户看到的第一个页面 我采取的步骤如下 将 UIViewCo
  • 在午夜更新应用程序徽章,并提供以下选项:应用程序未启动或在后台,徽章数量可能会减少

    我正在阅读许多有关本地通知的内容以及它们如何帮助更新应用程序徽章编号 我想在午夜更新此徽章 并将其值设置为我在午夜之前无法知道的数字 因此 如果可能的话 我想在午夜启动一个功能来更新 加载一些数据 检查要显示的数字 并将其显示在徽章上 当然
  • iphone:在 UIWebView 之上查看?

    我正在开发一个浏览器应用程序 并且 UIWebView 顶部有一个地址栏 在 MobileSafari 上 如果向下滚动 地址栏开始移动到顶部 移出屏幕 并且 UIWebView 不会滚动 只有当地址栏完全消失时 它才开始滚动 我也想在我的
  • 用 UIView 像翻书一样翻页?

    我正在尝试在之间切换UIViews让它看起来就像你正在翻书的一页 The UIViewAnimationTransitionCurlUp如果我能让它向左或向右卷曲 那就非常接近了 这可能吗 我尝试过使用CATRansition但没有一种动画
  • 如何将 NSIndexpath 转换为 NSInteger 或简单的 int?

    我需要将 nsindexpath var 转换为 NsInteger 或简单的 int 例如 int rowIndex mGoogleBaseTable selectedRow mGoogleBaseTable is a NSTable t
  • PresentModalViewController 不执行任何操作

    我有一个 UIViewController parent 调用presentModalViewController与另一个 UIViewController child on viewDidLoad If parent没有 UINaviga
  • 使用 Google place API 从 lat long 获取附近的地点

    我正在使用 google place API 即 https maps googleapis com maps api place search json location 33 7167 73 0667 radius 500 type f
  • 混合静态和动态 UITableViewController 内容会导致 NSRangeException

    我一直在寻找这个错误 并找到了一些具有类似行为的帖子 但没有解决问题的解决方案 我有一个 UITableViewController 在 SB 中声明为静态 它具有以下部分 第 0 部分 配方 是静态的 有 4 个单元格 第 1 部分 口味
  • 应用程序未通过协同设计验证?

    我在提交 iPhone 申请时遇到问题 我看到了一些类似的问题 但没有找到答案 当我存档项目并单击 验证 时 收到错误消息 应用程序未通过协同设计验证 签名无效 或者未使用 Apple 提交证书进行签名 我假设我在协同设计部分做错了什么 我
  • UINavigationController 在 UITabBarController 的 moreNavigationController 中不起作用

    我正在处理UINavigationControllers在我的应用程序中 全部由UITabBarController 一切工作正常 直到我的控制器落入自动生成的 更多 选项卡 我在简单的示例中重现了该问题 难道我做错了什么 我想不通 感谢您
  • 在 UIWebView 中隐藏键盘

    有没有办法让 UIWebView 关闭所有关联的输入控件 例如键盘 选择器 还没有在带有选择器的网络视图中尝试过 但这绝对可以消除键盘 theWebView endEditing YES
  • 如何从通讯录 ios 以编程方式编辑电话号码值

    我正在尝试在 iOS 中以编程方式替换特定联系人的特定电话号码 获取联系人表单地址簿 我不知道为什么我无法保存新的电话号码并刷新地址簿以显示更改 我正在这样做 BOOL changeContactPhoneNumber NSString p
  • APNS(Apple 推送通知服务器)的反馈服务

    我们正在使用Java作为推送通知提供商APNS I我能够将消息发送到APNS但我不知道如何获得该消息的反馈 请帮忙 反馈服务具有类似于用于发送推送通知的接口的二进制接口 您可以通过以下方式访问生产反馈服务feedback push appl
  • 如何连续关闭 2 个模态视图控制器?

    我有 2 个以模态方式呈现的视图控制器 A presents B which presents C 当我解雇C时 我也想解雇B 但我不知道该怎么做 解雇C self dismissModalViewControllerAnimated YE
  • 自定义事件多久才会出现?

    我正在尝试使用 Flurry 将分析跟踪添加到 iPhone 应用程序 我已经连接了 Flurry 并且它似乎可以很好地跟踪会话和使用情况 但是 我刚刚尝试添加自定义事件日志 但每当我查看 Flurry 分析 事件 页面时 它都会告诉我 您

随机推荐

  • 外部库会使应用程序变慢吗?

    我正在构建一个从网页中抓取信息的应用程序 为此 我选择使用一个名为的 html scraperJsoup http jsoup org 因为它使用起来非常简单 Jsoup 还依赖于 Apache Commons Lang 库 它们总计 38
  • python:如何根据值合并字典列表中的字典

    我有一个字典列表 其中每个字典由 3 个键组成 名称 url 和位置 在整个字典中 只有 name 的值可以相同 并且 url 和 location 在整个列表中始终是不同的值 Example name A1 url B1 location
  • BaseGameActivity.runOnUpdateThread() 与 Entity.registerUpdateHandler()

    如果我执行有什么区别Runnable with runOnUpdateThread 或者我将更新处理程序注册到实体中并用它执行代码 我想删除一个Sprite从场景Sprite detachSelf 在这种情况下 教程说必须在更新线程中调用此
  • 无法从 START_OBJECT 令牌中反序列化 java.lang.String 实例

    我遇到了一个问题 我的可部署 jar 遇到了异常 而当我在 IntelliJ 本地运行此异常时 该异常不会发生 例外 Receiving an event id 2 socket 0c317829 69bf 43d6 b598 7c0c55
  • 为什么 linter 会选择无用的转义字符?

    转义字符串 模板文字和正则表达式中的非特殊字符没有任何效果 Source https eslint org docs rules no useless escape https eslint org docs rules no useles
  • iOS 启动设置 -> 限制 URL 方案

    我最近发现了一个很棒的iOS5自定义设置URL方案 这可以在这个伟大的website http handleopenurl com scheme apple settings app 我发现这很有效 将用户从我的应用程序引导到 设置 应用程
  • 在 UITableViewController 中处理空 UITableView

    我有一个 UITableViewController 其中填充了一些数据 如果数据返回为空 则显然表是空的 使用什么适当的方法来处理这种情况并放置类似 无可用数据 的 UILabel 之类的内容 我一直在使用 NSString tableV
  • 在 PHP 中嵌入 HTML 中实现内联三元运算符

    我是 PHP 的学习者 我有一个正在实现 HTML5 代码的代码 我想做的是将内联三元运算符嵌入到我的占位符中 我已关注此链接 但没有一个有相同的问题陈述 使用三元运算符放置内联样式php https stackoverflow com q
  • 将参数传递给 WebClient.DownloadFileCompleted 事件

    我正在使用WebClient DownloadFileAsync 方法 并想知道如何将参数传递给WebClient DownloadFileCompleted事件 或任何其他与此相关的事件 并在调用的方法中使用它 我的代码 public c
  • 通过 PHP 发出 HTTPS 请求并获取响应

    我想通过 PHP 向服务器发出 HTTPS 请求并获取响应 与此 ruby 代码类似的东西 http Net HTTP new www example com 443 http use ssl true path uri resp data
  • htaccess 防止热链接也可以防止外部链接

    我在 htaccess 文件中添加了这段代码 以防止图像和 pdf 文件的热链接 但它也会阻止正常的外部链接工作 我的 htaccess 文件 RewriteEngine On RewriteCond HTTP REFERER Rewrit
  • 有没有办法将类字段标记为仅反序列化而不序列化?

    听起来很奇怪 但这正是我想要的 因为我正在使用名为 Project 的数据结构 该数据结构被序列化为保存文件 我希望能够使用已弃用的字段对旧版本的保存文件进行反序列化 然后仅使用当前使用的字段对其进行重新序列化 问题是我想在重新序列化结构时
  • Servlet 3.0 的错误页面

    In the web xml文件中 我尝试指定一个错误页面 如下所示
  • 如何在 Hyper 处理程序之间共享 HashMap?

    我正在尝试通过使用 Hyper 0 10 实现一个简单的内存中 URL 缩短器来学习 Rust 我遇到了一个问题 我认为是由于尝试关闭可变的HashMap在我的处理程序中 fn post mut req Request mut res Re
  • stdin、stdout 和 stderr 是文件吗?

    有人告诉我 每当运行 C 程序时 都会打开三个文件 STDIN STDOUT 和 STDERR 他在支持中给出了此链接 http tldp org LDP abs html io redirection html http tldp org
  • 滤波器相关矩阵 R

    我在尝试从相关矩阵中提取数据时遇到了一些困难 我希望提取高于 0 8 且低于 0 99 的值 因为我想排除恰好为 1 的两只股票的相关性 这是我的代码 Test load the packages library corrr library
  • SQL Server 2008 中单个列上的多个外键约束

    我有两个表 TableA 和 TableB 现在 TableA 有 2 列 ID 和 Name TableB 有 3 列 ID Name 和 TableAID 现在有一个来自 TableA ID TableB TableAID 的外键约束
  • Apple 推送通知提供商的设备令牌

    如果我是 Apple 推送通知 提供商 multipleiOS 应用程序可以对多个应用程序使用相同的设备令牌吗 我知道每个应用程序都需要唯一的 SSL 证书 但是我对设备令牌感到困惑 Example 我有两个应用程序 A 和 B 我想为这两
  • 在使用 OpenSSL 的 EVP_PKEY_keygen 之前,我是否需要播种任何随机数生成器?

    在 OpenSSL Wiki 页面上称为EVP 密钥和参数生成 https wiki openssl org index php EVP Key and Parameter Generation它规定如下 由于这些函数使用随机数 因此您应该
  • NSURLCache 缓存响应问题

    我正在编写一个 iPhone 应用程序 其中一个选项卡是 twitter feed 我正在解析 twitter xml 并将其很好地放入表格视图中 如果没有互联网连接 我想显示上次有互联网连接和更新表时的缓存结果 我使用 NSURLCach