Нераспознанный селектор при использовании sbjson
Я пытаюсь следовать этому руководству здесь 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 ответа
Это, вероятно, происходит, когда вы пытаетесь вызвать метод, который не принадлежит соответствующему классу или его суперклассу, тогда в этом случае вы получите ошибку:unrecognized selector sent to instance
,
Так что проверьте, что JSON вы получаете. Согласно JSON Response(данным) попробуйте его проанализировать.
Я хотел бы рассказать вам о 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"];
Если вы все еще не получите правильный результат.
objectForKey
это метод NSDictionary
не NSArray
, Возможно, вы пропустили (или перестарались) шаг в разборе строки JSON.
Обычно такого рода ошибки возникают, когда вы пытаетесь получить доступ к объекту dealloc. Проверьте, не преувеличиваете ли вы или не сохраняете jsonDictionary
,