AFNetworking 2.0 并且仅在离线时使用缓存

2023-12-02

当用户使用我的应用程序但失去连接或使用飞行模式时,我遇到了问题。

我的应用程序服务器端没有设置任何缓存策略,目前我无法更改它。我从 AFNetworking 1.x 迁移到 2.0,现在我正在使用AFHTTPRequestOperationManager提出请求时。问题是,因为我在服务器端没有缓存策略,所以每个请求都会向服务器发出(目前还好),但如果用户无法连接到我的服务器,则它不会加载缓存的请求。

所以,我正在尝试以下操作,使用AFHTTPRequestOperation直接这样:

NSURL *URL = [NSURL URLWithString:filePath];
NSMutableURLRequest *request = [[NSURLRequest requestWithURL:URL] mutableCopy];
if (![[AFNetworkReachabilityManager sharedManager] isReachable]) {
    [request setCachePolicy:NSURLRequestReturnCacheDataElseLoad];
}
AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

}];
[[NSOperationQueue mainQueue] addOperation:op];

这样,如果AFNetworkReachabilityManager告诉我没有连接,我为请求配置了缓存策略,并且它从缓存中正确加载。

问题是,这是处理这种情况的正确方法吗?


你只需要子类化AFHTTPSessionManager并检查客户端是否离线。然后,您可以更改缓存策略或强制应用程序使用缓存数据。

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

AFNetworking 2.0 并且仅在离线时使用缓存 的相关文章

随机推荐

  • ReactJS、event.currentTarget 与 Vanilla Javascript 的行为不同

    我想知道是否有类似的事情event currentTargetReactJS中存 在问题 使用event targetonclick 是我得到的childDiv而不是parentDiv 普通 JavaScript 示例 document g
  • 如何使用 bash 脚本计算单词中最常出现的 3 个字母序列

    我有一个示例文件 例如 XYZAcc ABCAccounting Accounting firm Accounting Aco Accounting Acompany Acoustical consultant 这里我需要 grep 一个单
  • 根据一个向量对多个向量进行排序[重复]

    这个问题在这里已经有答案了 我有四个向量 其中包含圆心的 x y 半径和重量信息 我想按重量顺序对它们进行排序 从最高到最低 但我真的不知道如何或从哪里开始 我可以把所有的向量放在一个Eigen Tensor如果有帮助的话 将收集的数据保存
  • Jqgrid 许可证(具有 MIT/GPL v2)与 Guriddo jqGrid JS(知识共享许可证)

    我在网站应用程序的开发环境中使用 jqGrid 4 5 4 版本 并希望在商业网站上发布应用程序时使用相同的版本 我的疑问是 最近我看到了 Guriddo Jqgrid 4 7 1 的最新版本及其新许可证 知识共享许可 请告诉我现在可以在商
  • 如何使Code Runner在外部终端(命令提示符)中运行?

    所以 基本上Visual Studio Code中的Code Runner可以在集成终端中运行 我怎样才能让它在外部终端中运行 这是命令提示符 因为我需要向我的同学展示我的程序的输出 所以通过集成的终端显示它并不方便 我知道有一个像 Dev
  • C++ 中奇怪的 double 到 int 转换行为

    以下程序显示了我在 C 中看到的奇怪的 double 到 int 转换行为 include
  • Kafka 流过滤:代理端还是消费者端?

    我正在研究卡夫卡流 我想使用选择性非常低 几千分之一 的过滤器来过滤我的流 我正在看这个方法 https kafka apache org 0100 javadoc org apache kafka streams kstream KStr
  • 错误 LNK2001:wdk 中无法解析的外部符号 _fltused

    我试图在 C 代码中定义一个双数据类型变量 该变量将在 Windows 内核中使用 代码可以编译 但在链接时出错 我尝试在源文件中使用 libcntpr lib 并在代码中定义 fltused 变量 但无济于事 如果有人可以帮助我如何使用它
  • 过程控制问题

    为什么循环第一次没有结束collatz 返回 1 def collatz global number if number 2 0 number number 2 print number return number else number
  • 在面板中查找第一个非缺失字符串值并使用值按组转发和回填 (SAS aur PROC SQL)

    我有一个包含不平衡观察面板的数据集 我想在其中使用最新的非缺失字符串向前和向后填充缺失和 或 错误 的股票观察结果 id time ticker have ticker want 1 1 ABCDE YYYYY 1 2 YYYYY 1 3
  • 打印时 Html 表格断行

    我目前正在尝试打印的表格存在一些问题 如果它有多于一页 在分页符上 其中的表格行将被裁剪 我已经尝试过使用table page break inside auto and tr page break inside avoid page br
  • Fastlink 着陆页未呈现

    我正在致力于为我的应用程序实现用于聚合和 IAV 的 Fastlink 2 0 集成 我能够获取聚合和 IAV 的 oauth 令牌 但是当我使用它以及所需的参数来呈现 Fastlink 登录页面时 我得到的响应为 无法获取资源 我遵循的步
  • WPF 语音气泡

    我目前正在创建一个小软件 您可以在其中创建自己的漫画 我目前正在尝试添加气泡 我所做的是 我将一个文本框放在圆角边框内 这是我的结果 现在我想添加一个指向说话的角色的箭头 我想要得到的示例 箭头的位置应由用户选择 它想围绕边界旋转 我不知道
  • Python 数值积分与辛普森法则

    我已经开始学习这本书了 计算物理练习 5 4 及其练习 我遇到了以下问题 编写一个 Python 函数 J m x 使用 N 1000 个点的辛普森规则计算 Jm x 的值 在程序中使用您的函数在单个图形上绘制贝塞尔函数 J0 J1 和 J
  • Python正则表达式:如何仅增加字符串中的一个数字?

    我有以下类型的字符串 a1 images1subimages1 folder100 hello1 png a1 images1subimages1 folder100 hello1 png a1 images1subimages1folde
  • 每小时值总和

    我有一个具有以下结构和示例数据的表 STORE ID INS TIME TOTAL AMOUNT 2 07 46 01 20 3 19 20 05 100 4 12 40 21 87 5 09 05 08 5 6 11 30 00 12 6
  • Azure 流分析 - 应用窗口翻滚时自定义“时间戳”出错

    我有一个 json 文件 如下所示 imei imei 358174069248418F imeiBinary NYF0BpJIQY8 imeiNotEncoded 358174069248418 有效 1 dataPackets msy
  • 在 C# 中对对象的 ArrayList 进行排序

    我怎样才能排序ArrayList的物体 我已经实施了IComparable排序时的界面ArrayList 但我没有得到所需的结果 我的代码示例 public class Sort IComparable public string Coun
  • 为什么 os.path.expanduser 不返回主目录?

    我正在制作一个 python 桌面应用程序 它将日志作为 csv 文件保存在 Windows 上用户的文档文件夹中 该应用程序是用 python 2 7 和 kivy 1 8 0 编写的 使用 pyinstaller 2 1 打包为 Win
  • AFNetworking 2.0 并且仅在离线时使用缓存

    当用户使用我的应用程序但失去连接或使用飞行模式时 我遇到了问题 我的应用程序服务器端没有设置任何缓存策略 目前我无法更改它 我从 AFNetworking 1 x 迁移到 2 0 现在我正在使用AFHTTPRequestOperationM