Доступ к данным JSON внутри NSDictionary, сгенерированному из NSJSONSerialization - PullRequest
1 голос
/ 21 декабря 2011

Возникли проблемы с доступом к данным JSON по следующему URL-адресу (http://jamesstenson.com/portraits/?json=1), в основном я хочу получить доступ к полному URL-адресу под вложениями.Мой код на данный момент выглядит следующим образом:

NSError *e = nil;
NSData *jsonFeed = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://jamesstenson.com/portraits/?json=1"]]; 
NSDictionary *jsonData = [NSJSONSerialization JSONObjectWithData:jsonFeed options:NSJSONReadingMutableContainers error: &e];

if (!jsonData) {
    NSLog(@"Error parsing JSON: %@", e);
} else {

    for(NSDictionary *item in [jsonData objectForKey:@"page"]) {
        for(NSDictionary *attachment in [item objectForKey:@"images"]) {
            NSLog(@"%@", attachment);
        }
    }
}

Это продолжает выдавать ошибку:

2011-12-21 10:13:39.362 JSON[3463:f803] -[__NSCFString objectForKey:]: unrecognized selector sent to instance 0x6a7b500

2011-12-21 10: 13: 39.363 JSON [3463: f803]* Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: '- [__ NSCFString objectForKey:]: нераспознанный селектор, отправленный экземпляру 0x6a7b500'

Я знаю, что получаю доступ к элементам неправильно,но не могу понять, как этого добиться.Я пробовал несколько решений, таких как http://blogs.captechconsulting.com/blog/nathan-jones/getting-started-json-ios5 - но не повезло.Я новичок в разработке для iOS и немного знаю JSON.Спасибо всем за помощь заранее.

1 Ответ

3 голосов
/ 21 декабря 2011

Проблема в тебе за цикл

for(NSDictionary *item in [jsonData objectForKey:@"page"]) 

Вы не получите NSDictionary в элементе, он вернет вам ключ Dictionary, который будет NSString

Проверьте эту ссылку для каждого цикла в цели c для доступа к словарю NSMutable , чтобы узнать, как пройти через NSDictionay

Ниже приведен модифицированный код для вашего требования, может помочь вам

if (!jsonData) {
        NSLog(@"Error parsing JSON: %@", e); } else {
        NSArray *attachments = [[jsonData objectForKey:@"page"] objectForKey:@"attachments"];
        for(NSDictionary *object in attachments) {
              NSLog(@"%@", [object objectForKey:@"images"]);
              NSLog(@"%@", [[[object objectForKey:@"images"] objectForKey:@"full"] objectForKey:@"url"]);
        } 
}
...