我使用ASIHTTPReqeust下载文件。一切都下载得很好,但它无法将文件从临时目录移动到文档。当我实施
-(void) request:(ASIHTTPRequest *)request didReceiveData:(NSData *)data
请求失败并显示错误。但文件已下载。
如果我删除此实现,一切都很好,文件正在转移到文档。 这是错误文本:
Error Domain=ASIHTTPRequestErrorDomain Code=8 "Failed to move file from '/var/folders/Qu/Qu0o0VcpEY4npJr2C1yPzE+++TI/-Tmp-/Skrillex feat. Nero - Wobbleland.mp3' to '/Users/Timur/Library/Application Support/iPhone Simulator/4.3/Applications/34389282-4013-4354-95D9-DF2847B4EE55/Documents/Audio/Skrillex feat. Nero - Wobbleland.mp3'" UserInfo=0x5949520 {NSUnderlyingError=0x59992a0 "The operation couldn’t be completed. (Cocoa error 4.)", NSLocalizedDescription=Failed to move file from '/var/folders/Qu/Qu0o0VcpEY4npJr2C1yPzE+++TI/-Tmp-/Skrillex feat. Nero - Wobbleland.mp3' to '/Users/Timur/Library/Application Support/iPhone Simulator/4.3/Applications/34389282-4013-4354-95D9-DF2847B4EE55/Documents/Audio/Skrillex feat. Nero - Wobbleland.mp3'}
谁有类似的问题?
答案 0 :(得分:9)
经常吸引人们的是你必须创建自己下载的目录(ASIHTTPRequest不会自动创建它)。
但是,如果你说它与实现didReceiveData有关,那就不是那样了。
如果查看ASIHTTPRequest.m,如果在委托中实现'didReceiveData',则会看到它设置'dataWillBeHandledExternally' - 这将阻止数据写入磁盘。您可以自己编写数据,也可以更改ASIHTTPRequest.m代码以添加标志以强制它在内部处理数据。
答案 1 :(得分:1)
我遇到了同样的错误,但原因不同了。我会发布我的问题 - 以防其他人有类似的情况。
在保存新图像之前,我试图删除旧图像。
NSString *mImgName = [managedObj valueForKey:@"aImgName"];
NSString * mFilePath = [[self applicationDocumentsDirectory]
stringByAppendingPathComponent:mImgName];
if ([mFileManager fileExistsAtPath:mFilePath])
{
[mFileManager removeItemAtPath:mFilePath error:nil];
}
问题是 - 如果 mImgName 为nil, mFileManager 将删除整个目录。
通过添加额外检查nil或太短的 mImgName 值,它解决了问题。
希望它会帮助别人!