1

サーバーからいくつかのドキュメントをダウンロードするためにASIHTTPを使用しています。最初にローカルバージョン(iPadファイルシステムに保存されている)とサーバーバージョンの違いを制御し、次に(アラートビューの確認後)ダウンロードを開始するボタンがあります。ドキュメントをダウンロードするには、次のコードを使用します。

for (SyncNode *node in _syncDocuments) {
        //SyncNode is a my Class that handle document
        // start the download
        NSString *filename = [NSString stringWithFormat:@"%@.%@",node.uniqueIdentifier,node.extension];
        NSString *tempPath = [SavedDocument pathToSyncFile:filename];
        // tempPath is a string like this
        // /var/mobile/Applications/5C05AA6F-55B3-46FD-8330-094BD0E61973/Documents/SyncDocumentsFolder/D49B421C-7528-4A3D-A8F6-942FF03881D0/f2e650e2-cff7-4485-9152-5445bee436f2.jpg

        //BaseHTTPRequest is an extension of ASIHTTPRequest
        BaseHTTPRequest *request = [[[BaseHTTPRequest alloc] initWithURL:[NSURL URLWithString:node.contentLocation] accountUUID:_uuid] autorelease];
        request.userInfo = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:i+1] forKey:@"requestNumber"];
        [request setDelegate:self];
        [request setShowAccurateProgress:YES];
        [request setDownloadProgressDelegate:self];
        [request setDownloadDestinationPath:tempPath];

        [request startAsynchronous];
}

シナリオ。

  1. iPadにローカルファイルが保存されていません
  2. ボタンを押すと、ルーチンがダウンロードのサイズを計算します
  3. ダウンロードを受け入れ、ルーチンがすべてのドキュメントをダウンロードします。このドキュメントの1つを(Webビューで)表示しようとすると、正常に機能し、ドキュメントを見ることができます。
  4. すべてのローカルドキュメントを削除します(削除プロセスは完全に機能します。実際、ドキュメントはファイルシステムに存在します)。

今、私は1の同じ状況にありますが、同じドキュメントを再度ダウンロードしようとすると(2回目)、すべてのASIHTTPRequestが返さ- (void)requestFinished:(ASIHTTPRequest *)requestれ、非常に短い時間間隔でメソッドが呼び出されます。例:8MBのドキュメントを含むディレクトリがあります。ルーチンがすべてのダウンロードを完了するのに初めて11秒または12秒かかる場合。代わりに、2回目は、同じドキュメントを使用した同じルーチンで、すべてのダウンロードを完了するのに1秒もかかりません。

ダウンロードが実行されていないようですが、ASIHTTPはエラーデリゲートメソッドを呼び出しません。

ダウンロードしたドキュメントを(2回目)表示しようとすると、コンソールに次のエラーメッセージが表示されます。

   Error copying file to temp path Error Domain=NSCocoaErrorDomain Code=260 "The operation
 couldn’t be completed. (Cocoa error 260.)" UserInfo=0x1229e900 
{NSFilePath=/var/mobile/Applications/5C05AA6F-55B3-46FD-8330-
094BD0E61973/Documents/SyncDocumentsFolder/D49B421C-7528-4A3D-A8F6-942FF03881D0/f2e650e2-cff7-
4485-9152-5445bee436f2.jpg, NSUnderlyingError=0x1229e570 "The operation couldn’t be completed. 
No such file or directory"}

この問題は私を夢中にさせます!何か案は ?

4

1 に答える 1

0

プロパティを使用して、リクエストのキャッシュポリシーを設定してみてくださいsetCachePolicy

[request setCachePolicy:(ASIDoNotReadFromCacheCachePolicy | ASIDoNotWriteToCacheCachePolicy)];

詳細については、これをお読みください:http: //allseeing-i.com/ASIHTTPRequest/How-to-use#using_a_download_cache

于 2012-09-06T10:19:28.840 に答える