サーバーからビデオと PDF をダウンロードしています。デバイスのメモリが残り 50MB と言うと、アプリのダウンロード中にクラッシュします。ダウンロードしたデータが電話に残っているメモリ容量よりも多いかどうかを確認する方法は?
また、データが利用可能な容量を超えている場合、ダウンロードを停止するにはどうすればよいですか?
誰もが簡単な解決策を知っていますか?
リクエストを開始する前に、使用可能なディスク容量を取得できます。
NSError *error = nil;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSDictionary *dictionary = [[NSFileManager defaultManager] attributesOfFileSystemForPath:[paths lastObject] error: &error];
NSNumber *freeFileSystemSizeInBytes = [dictionary objectForKey:NSFileSystemFreeSize];
作成しているリクエストの を取得するNSURLResponse
と、(できれば) コンテンツ サイズ ヘッダーが含まれている必要があるため、予想されるデータ量がわかります。データ量が多すぎる場合はcancel
、リクエストして (デリゲートを使用していると仮定してNSURLConnection
)、ユーザーに警告することができます。