我使用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.但是当我尝试再次下载相同的文档时(第二次)所有ASIHTTPRequest返回并在很短的时间内调用我的- (void)requestFinished:(ASIHTTPRequest *)request
方法间隔。
示例:我有一个包含8MB文档的目录;例程第一次需要11或12秒才能完成所有下载。相反,第二次相同的例程,使用相同的文档需要不到1秒的时间来完成所有下载。
似乎下载没有运行,但ASIHTTP没有调用任何错误委托方法。
当我尝试显示下载的文档时(第二次),我在控制台中看到此错误消息:
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"}
这个问题让我抓狂! 有什么想法吗?
答案 0 :(得分:0)
尝试使用setCachePolicy
propery为您的请求设置缓存政策。
[request setCachePolicy:(ASIDoNotReadFromCacheCachePolicy | ASIDoNotWriteToCacheCachePolicy)];
有关更多信息,请阅读:http://allseeing-i.com/ASIHTTPRequest/How-to-use#using_a_download_cache