我想下載文件到下載文件夾。我搜索了谷歌,並找到了NSURLDownload類。我讀過的開發中心的頁面,並創造了這個代碼(有一些複製和粘貼)以下代碼:使用可可下載文件
@implementation Downloader
@synthesize downloadResponse;
- (void)startDownloadingURL:(NSString*)downloadUrl destenation:(NSString*)destenation {
// create the request
NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL URLWithString:downloadUrl]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
// create the connection with the request
// and start loading the data
NSURLDownload *theDownload=[[NSURLDownload alloc] initWithRequest:theRequest
delegate:self];
if (!theDownload) {
NSLog(@"Download could not be made...");
}
}
- (void)download:(NSURLDownload *)download decideDestinationWithSuggestedFilename:(NSString *)filename {
NSString *destinationFilename;
NSString *homeDirectory=NSHomeDirectory();
destinationFilename=[[homeDirectory stringByAppendingPathComponent:@"Desktop"]
stringByAppendingPathComponent:filename];
[download setDestination:destinationFilename allowOverwrite:NO];
}
- (void)download:(NSURLDownload *)download didFailWithError:(NSError *)error {
// release the connection
[download release];
// inform the user
NSLog(@"Download failed! Error - %@ %@",
[error localizedDescription],
[[error userInfo] objectForKey:NSErrorFailingURLStringKey]);
}
- (void)downloadDidFinish:(NSURLDownload *)download {
// release the connection
[download release];
// do something with the data
NSLog(@"downloadDidFinish");
}
- (void)setDownloadResponse:(NSURLResponse *)aDownloadResponse {
[aDownloadResponse retain];
[downloadResponse release];
downloadResponse = aDownloadResponse;
}
- (void)download:(NSURLDownload *)download didReceiveResponse:(NSURLResponse *)response {
// reset the progress, this might be called multiple times
bytesReceived = 0;
// retain the response to use later
[self setDownloadResponse:response];
}
- (void)download:(NSURLDownload *)download didReceiveDataOfLength:(unsigned)length {
long long expectedLength = [[self downloadResponse] expectedContentLength];
bytesReceived = bytesReceived+length;
if (expectedLength != NSURLResponseUnknownLength) {
percentComplete = (bytesReceived/(float)expectedLength)*100.0;
NSLog(@"Percent - %f",percentComplete);
} else {
NSLog(@"Bytes received - %d",bytesReceived);
}
}
-(NSURLRequest *)download:(NSURLDownload *)download
willSendRequest:(NSURLRequest *)request
redirectResponse:(NSURLResponse *)redirectResponse {
NSURLRequest *newRequest=request;
if (redirectResponse) {
newRequest=nil;
}
return newRequest;
}
@end
但我的問題是,現在,按規定它不顯示在桌面上。我想把它放在下載中,而不是放在桌面上... 我該怎麼做?
編輯: 最後一個堆:
#0 0x92169ed7 in objc_msgSend
#1 0x01390090 in ??
#2 0x90443107 in URLDownload::didReceiveResponse
#3 0x903ecfc0 in URLConnectionClient::_clientSendDidReceiveResponse
#4 0x90465705 in URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload
#5 0x904658b2 in URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload
#6 0x903e0ace in URLConnectionClient::processEvents
#7 0x903e096f in MultiplexerSource::perform
#8 0x953df15b in __CFRunLoopDoSources0
#9 0x953dcc1f in __CFRunLoopRun
#10 0x953dc0f4 in CFRunLoopRunSpecific
#11 0x953dbf21 in CFRunLoopRunInMode
#12 0x96bc10fc in RunCurrentEventLoopInMode
#13 0x96bc0eb1 in ReceiveNextEventCommon
#14 0x96bc0d36 in BlockUntilNextEventMatchingListInMode
#15 0x9775d135 in _DPSNextEvent
#16 0x9775c976 in -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]
#17 0x9771ebef in -[NSApplication run]
#18 0x97716c85 in NSApplicationMain
#19 0x00002628 in main at main.m:13
蘋果不鼓勵使用NSURLDownload並建議切換到NSURLSession - 看https://developer.apple.com/library/mac/documentation/Cocoa /Conceptual/URLLoadingSystem/URLLoadingSystem.html – pi3 2016-07-07 14:51:33