Try to analyze JSON data from Flickr. Cocoa error 3840

advertisements

I’ve never used an API in conjunction with web services before and I’m having trouble parsing the JSON data I’m receiving from Flickr’s API. The only thing I do know (from all the things I have read) is that it is easy and very simple. About as far as I can get is returning a string in the console. Using a dictionary returns null and or an error. What am I missing? I want to be able to pull out the id and owner so that I can get the photo url.

This returns data on my photo:

NSString *json = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@”%@”, json); //this returns data on my photo

This returns null(resultDict) and error 3840:

NSString *requestString = @”https://api.flickr.com/services/rest?&method=......etc;
NSURL *url = [NSURL URLWithString:requestString];
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:config];

NSURLSessionDataTask *task = [session dataTaskWithURL:url
  completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
    NSMutableDictionary *resultdict = [NSJSONSerialization JSONObjectWithData:data        options:NSJSONReadingMutableContainers error:&error];
    NSLog(@”%@”, resultDict); //returns null
    If (error != nil) { NSLog(@”%@”, [error localizedDescription]); }
    else { self.myDict = [[resultDict objectforKey:@”photos”] objectAtIndex:0];
    NSLog(@”%@”, self.myDict); }
}];
[task resume];

To check if I have an array of dictionaries I did the following and it returned 0:

NSMutableArray *resultArray = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainer  error:&error];                                                                                                                                                                                                                          error:&error];

NSLog(@"%lu", (unsigned long)resultArray.count);


Are you sure that

[NSJSONSerialization JSONObjectWithData:data        options:NSJSONReadingMutableContainers error:&error];

returns a Dictionary and not an Array of Dictionnaries?

EDIT :

Can you try to use this to request the API please? I checked in my projects, my reponses seems to have the same syntax as yours. Only the code I use is different. (If you could give us the full URL you've to call, it would be easier for us ^^')

NSString *[email protected]"YOUR URL";
NSURL *url=[NSURL URLWithString:str];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:5.0];
NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse:&response error: &error];
NSMutableDictionary* resultList = [NSJSONSerialization JSONObjectWithData:returnData options:NSJSONReadingMutableContainers error:nil];

I copied it without the errors. I let you manage that ^^