Нераспознанный селектор при использовании sbjson - PullRequest
1 голос
/ 04 марта 2012

Я пытаюсь следовать этому уроку здесь http://ios -blog.co.uk / iphone-development-tutorials / parsing-json-on-ios-with-asihttprequest-and-sbjson / выполнить одновременно и учебник ASIHttp, и SBJSon, и все будет хорошо до строки

NSMutableArray *colorTitles = [jsonDictionary objectForKey:@"title"];

, где он вылетел бы с ошибкой

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM objectForKey:]: unrecognized selector sent to instance 0x9340d20'

я пытался использовать NSArray, NSString и у меня заканчиваются идеи ... мои коды точно такие же со ссылкой

Ответы [ 3 ]

1 голос
/ 04 марта 2012

Это, вероятно, происходит, когда вы пытаетесь вызвать метод, который не принадлежит соответствующему классу или его суперклассу, тогда в этом случае вы получите ошибку: unrecognized selector sent to instance.

Итак, проверьте, какой JSON вы получаете.В соответствии с ответом (данными) JSON попробуйте его проанализировать.

Я хотел бы рассказать вам о JSON:

JSON is built on two structures:

A collection of name/value pairs. In various languages, this is realized as an object, record, struct, dictionary, hash table, keyed list, or associative array.
An ordered list of values. In most languages, this is realized as an array, vector, list, or sequence.

В JSONони принимают следующие формы:

Объект

Объект - это неупорядоченный набор пар имя / значение.Объект начинается с {(левая скобка) и заканчивается} (правая скобка).Каждое имя сопровождается: (двоеточие), а пары имя / значение разделяются, (запятая).

Массив:

Массив представляет собой упорядоченную коллекциюценности.Массив начинается с [(левая скобка) и заканчивается] (правая скобка).Значения разделяются, (запятая).

Значение

Значение может быть строкой в ​​двойных кавычках, или числом, или истиной, или ложью, или нулем, илиобъект или массив.Эти структуры могут быть вложенными.

Я думаю, вы получаете значение JSON, поэтому попробуйте ниже.и одна вещь, которую вы не можете присвоить (создать объект) значение для NSmutableArray буквально.Пожалуйста, сделайте это ниже.

NSArray *colorTitles = [jsonDictionary valueForKey:@"title"];

Если вы все еще не получили правильный результат.

http://www.json.org/

0 голосов
/ 04 марта 2012

Обычно такого рода ошибки возникают, когда вы пытаетесь получить доступ к объекту dealloc. Проверьте, не преувеличиваете ли вы или не сохраняете jsonDictionary.

0 голосов
/ 04 марта 2012

objectForKey - это метод NSDictionary, а не NSArray.Возможно, вы пропустили (или перестарались) шаг в разборе строки JSON.

...