【发布时间】:2012-12-09 18:12:40
【问题描述】:
我在我的应用程序中使用 AFNetworking,并尝试通过使用缓存数据(如果可用)使其在离线模式下工作。
我预计在将请求缓存策略设置为 NSURLRequestReturnCacheDataDontLoad 后,getPath:parameters:success:failure: 将在离线时成功处理缓存数据。但是,即使缓存中有数据(我通过代码检查缓存来验证),getPath 在飞行模式下也会失败。
AFNetworking github 中有一个帖子:https://github.com/AFNetworking/AFNetworking/issues/378 但似乎这个问题根本没有解决。 AFNetworking 的作者直接指向Apple's document,它说:
NSURLRequestReturnCacheDataDontLoad 指定现有缓存 数据应用于满足请求,无论其年龄或 截止日期。如果缓存中没有现有数据 对应于 URL 加载请求,不尝试加载 来自原始源的数据,并且负载被认为具有 失败的。此常量指定类似于 “离线”模式。
正如苹果所说,NSURLRequestReturnCacheDataDontLoad 是专为离线模式设计的。
我在 iOS6 上测试,我用 NSURLCache 和 SDURLCache 都测试过,结果都是一样的。
请求失败,错误信息:
2012-12-22 03:11:18.988 Testapp[43692:907] 错误:错误 Domain=NSURLErrorDomain Code=-1009 "互联网连接似乎 离线。” UserInfo=0x211b87c0 {NSErrorFailingURLStringKey=http://Testapp.com/api/v1/photo/latest/, NSErrorFailingURLKey=http://Testapp.com/api/v1/photo/latest/, NSLocalizedDescription=互联网连接似乎离线。, NSUnderlyingError=0x211b9720 "互联网连接似乎是 离线。”}
【问题讨论】:
标签: ios ios5 afnetworking offline-caching