issue5-4-from-NSURLConnection-to-NSURLSession 's issue.
hayyyyyyden opened this issue · 3 comments
hayyyyyyden commented
in the paragraph "Download requests take a request as well...." of section Constructors
in article issue-5-4 I found something hard to be understood.
- it says in the last: "...the completion handler to move the file from its temporary location to a permanent location, which is then the return value of the block: ". But the block here actually has no return value. so the code below will not be compilable.
- I also don't get the idea of the code of the block below that is using the
[response URL]
instead of the return valueNSURL * location
. isn't the latter to be the actual temp file's URL?
chriseidhof commented
Hm, I see what you mean. Probably the block needs to move the file there.
@mattt, could you have a look at this? If not, I could also update it!
mattt commented
- it says in the last: "...the completion handler to move the file from its temporary location to a permanent location, which is then the return value of the block: ". But the block here actually has no return value. so the code below will not be compilable.
Indeed, I had mixed that up with what AFNetworking does for download tasks. The code should be:
NSURLSessionDownloadTask *downloadTask = [session downloadTaskWithRequest:request
completionHandler:
^(NSURL *location, NSURLResponse *response, NSError *error) {
NSString *documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSURL *documentsDirectoryURL = [NSURL fileURLWithPath:documentsPath];
NSURL *documentURL = [documentsDirectoryURL URLByAppendingPathComponent:[response
suggestedFilename]];
[[NSFileManager defaultManager] moveItemAtURL:location
toURL:documentURL
error:nil];
}];
The updated paragraph should omit ", which is then the return value of the block".
- I also don't get the idea of the code of the block below that is using the [response URL] instead of the return value NSURL * location. isn't the latter to be the actual temp file's URL?
location
is a temporary file in a temporary directory. The purpose of this completion handler is to move it to its final directory and filename, which should be derived from the suggestedFilename
of the response.
chenzilu1990 commented
o,o,soga