Задача C Ошибка недопустимого селектора во вложенном словаре - PullRequest
1 голос
/ 27 июля 2011

Итак, я новичок в Objective C и пытаюсь разобрать словарное представление ответа JSON API геокодирования.Вот что у меня есть:

NSString *responseString = [request responseString];
NSDictionary *responseDict = [responseString JSONValue];
NSDictionary *results = [responseDict objectForKey:@"results"];
NSDictionary *geometry = [results objectForKey:@"geometry"];

Я получаю ошибку SIGABRT, указывающую на неверный селектор.Я не знаю, как исправить это или, может быть, даже лучше, есть ли другой способ сделать вложенный словарь доступа?

Вы можете увидеть ответ json здесь:

http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true

РЕДАКТИРОВАТЬ: добавлено больше кода

Ответы [ 2 ]

2 голосов
/ 27 июля 2011

Вам необходимо проверить класс объекта, возвращаемого -objectForKey:. -objectForKey: возвращает id, который, как вы предполагаете, будет NSDictionary, к сожалению, для вас в ответе вы получите "результаты", которые вернут массив, который ваш JSON-анализатор, скорее всего, вернет как NSArray, который не ответить на -objectForKey:.

0 голосов
/ 27 июля 2011

В этом случае вам нужно посмотреть, что такое responseDict.Это очень возможно ноль.Вам нужно определить, какое значение возвращается из [responseString JSONValue] (это может быть либо NSDictionary или NSArray - но SBJSON также может вернуть nil для этого).не является экземпляром NSDictionary.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...