Unable to get destinationURL data in connectionDidFinishDownloading for ios5
I'm trying to get a list of assests urls to download. I'm using NSURLConnection in order to get a JSON file that have this list of urls. in
- (void)connection:(NSURLConnection *)connection didWriteData:(long long)bytesWritten totalBytesWritten:(long long)totalBytesWritten
开发者_开发知识库I'm getting 122239 as total bytes written. when
- (void)connectionDidFinishDownloading:(NSURLConnection *)connection destinationURL:(NSURL *)destinationURL
is called I'm trying to read the url data in order to extract the JSON file:
NSData *data = [NSData dataWithContentsOfURL:destinationURL options:NSDataReadingUncached error:&error];
data is always giving me a nil value also there is 122239 byte written in this file and the error print description is showing "No such file or directory"
Error Domain=NSCocoaErrorDomain Code=260 "The operation couldn\u2019t be completed. (Cocoa error 260.)" UserInfo=0x4a1b90 {NSFilePath=/private/var/mobile/Applications/CD8E4838-D78D-41DE-8896-360B7FC02A1D/tmp/c1749157e1d4317f6158a8490e138e7e, NSUnderlyingError=0x4c5ae0 "The operation couldn\u2019t be completed. No such file or directory"}
Any suggestions?
NSURLConnectionDownloadDelegate
only works for Newstand apps so far. Please file a bug.
You could try to use NSURLConnectionDataDelegate
instead. It won't show up in the docs, but it's actually there (use Open Quickly to find it Cmd+Shift+O).
There you could use following methods
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
iIf NSURLConnectionDownloadDelegate methods present in you class, NSURLConnectionDataDelegate will not be called. Watch out! – jAckOdE Thanks to a comment in Erik Aigner's answer below.
Basically... The NSURLConnectionDownloadDelegate overrides NSURLConnectionDataDelegate. Beware!!! :)
– (void)connection:(NSURLConnection *)connection didReceiveData:(NSData*)data
Above method is used to receive the data which we get using post method.
– (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
This method , you can use to receive the error report in case of connection is not made to server.
– (void)connectionDidFinishLoading:(NSURLConnection *)connection
The above method is used to process the data after connection has made successfully.
精彩评论