私は自分のアプリで AFNetworking を使用しており、利用可能な場合はキャッシュされたデータを使用してオフライン モードで動作させようとしています。
要求キャッシュ ポリシーを NSURLRequestReturnCacheDataDontLoad に設定した後、getPath:parameters:success:failure: がオフライン時にキャッシュされたデータで成功すると予想しました。ただし、キャッシュにデータがあっても(コードでキャッシュをチェックして確認しました)、機内モードでは getPath は単に失敗します。
AFNetworking github にスレッドがありました: https://github.com/AFNetworking/AFNetworking/issues/378 しかし、問題はまったく解決されていないようです。AFNetworking の作成者は、単にApple のドキュメントを指し示し、次のように述べています。
NSURLRequestReturnCacheDataDontLoad 経過時間や有効期限に関係なく、リクエストを満たすために既存のキャッシュ データを使用する必要があることを指定します。URL 読み込み要求に対応する既存のデータがキャッシュに存在しない場合、元のソースからのデータの読み込みは試行されず、読み込みは失敗したと見なされます。この定数は、「オフライン」モードに似た動作を指定します。
Apple が言ったように、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=インターネット接続はoffline., NSUnderlyingError=0x211b9720 "インターネット接続がオフラインのようです。"}